码迷,mamicode.com
首页 > 编程语言 > 详细

14 线程状态

时间:2018-02-12 13:43:36      阅读:158      评论:0      收藏:0      [点我收藏+]

标签:col   其他   rmi   ack   休眠   package   直接   test   alt   

package thread;

public class TestOne {

    public static void main(String[] args) {
        // TODO Auto-generated method stub

        method();
    }
    
    /**
     * 一个任务被称为一个线程,同时运行一个以上的任务被称为多线程。
     * 
     * 1.使线程休眠 sleep
     * 
     * 2.启动线程start
     *  不要直接用Thread的start方法,创建一个线程池,不必为每个任务开启一个线程
     *  不要直接调用 Thread方法和Runnable的run方法,只会执行同一线程中的任务,不会开启一个新线程。
     * 
     * 3.中断线程
     *   没有方法可以强制线程中断, interrupt 可以请求线程中断,调用interrupt方法是线程的中断状态将被置位。
     *   
     *   void interrupt() 向线程发送请求,将线程的中断状态置为true
     *   
     *    public boolean isInterrupted() {} 测试当前线程是否被中断。 会将当前线程的中断状态置为false
     *     
     *    public static native Thread currentThread(); 返回当前线程对象 
     *        
     */

    public static void method(){
//        Thread.currentThread().isInterrupted();
        Thread.currentThread().interrupt();
        System.out.println(Thread.currentThread().isInterrupted());
    }

}
package thread;

public class TestTwo {

    /**
     * 线程状态
     * 
     * 线程可以有6种状态:
     * New (新创建)
     * Runnable(可运行)
     * Blocked(被阻塞)
     * waiting(等待)
     * Timed waiting(计时等待)
     * Terminated(被终止)
     * 
     * 
     * 新创建线程
     * new Thread(r)
     * 
     * 可运行线程
     * 可能正在运行,也可能没有运行
     * 抢占式调度系统:给每个可运行线程一个时间片来执行任务,时间片用完,剥夺线程的运行权,给另外一个线程运行机会。
     * 
     * 被阻塞线程和等待线程
     * 每个线程视图获取对象的内部锁,当锁被其他线程持有的时候,则该线程处于阻塞状态。
     * 直到所有线程释放内部锁,线程调度器允许本线程持有它时,线程处于非阻塞状态。
     * 
     * 等待状态:当前线程等待另外一个线程通知调度器一个条件时,自身进入等待状态。
     * 计时等待:有几个方法具有超时参数,调用它,导致线程进入计时等待。
     * 
     * 被终止的线程
     * 有2个原因导致线程被终止:
     * 1)run方法正常退出而自然死亡
     * 2)因为一个没有捕获的异常终止了run方法
     * 
     * join() 等待终止指定的线程
     * 
     * Thread.currentThread().getState() 获取当前线程的状态
     */
    
    public static void main(String[] args) {
        // TODO Auto-generated method stub
        try {
            System.out.println(Thread.currentThread().getState()); 
            Thread.currentThread().join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
    
}

 技术分享图片

14 线程状态

标签:col   其他   rmi   ack   休眠   package   直接   test   alt   

原文地址:https://www.cnblogs.com/lxh520/p/8443825.html

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!