改变线程状态的方法
改变线程状态的方法
在说线程的基本方法之前,我们先介绍一下线程的生命周期,也就是线程的几个状态,线程有新建、就绪、运行、阻塞和死亡。
start 方法
调用 new 方法会创建一个线程,这时候的线程处于新建状态,当调用 start 方法的时候,线程处于就绪状态。
start 方法和 run 方法 的区别在于 start 方法让新建的线程进入就绪状态,而 run 方法中是需要执行的线程的代码,当调用 run 方法的时候,线程就是运行的状态,run 方法执行完成后,线程会被终止,CPU 对其他线程进行调度。
yield 方法
yield 方法是让当前线程释放 CPU,和其他线程一起竞争时间片,它让运行态的线程进入就绪状态。
sleep 方法
sleep 方法让线程进入超时等待状态,sleep 方法不会释放当前的锁,它属于 Thread 类
wait 方法
wait 方法让线程进入等待状态,wait 方法被调用后会释放锁,它属于 Object 类,需要等待 notify 来进行唤醒,
notify 方法
notify 方法是唤醒对象监视器等待的线程,有个有多个就随机选择一个。
join 方法
join 方法是让当前线程进入阻塞状态,等其他线程结束后,当前线程再由阻塞进入就绪状态。一般结果的分步计算可以 join 来进行操作
setDaemon 方法
setDaemon 方法定义守护线程,守护线程是 jvm 级别的
Interrupt 方法
interrupt 用于线程的中断,调用这个方法不会立即中断,而是根据中断的标识来判断是否改变线程的状态。通过中断标志位安全终止线程。
总结
这篇文章主要介绍了几个改变线程的方法,start 方法用于启动线程,yield 方法用于让运行的状态变为就绪状态,sleep 方法让线程睡眠,不释放锁,wait 方法同样让线程处于等待状态,释放锁,通过 notify 方法来进行唤醒。还有 join 方法等等。
版权声明: 本文为 InfoQ 作者【周杰伦本人】的原创文章。
原文链接:【http://xie.infoq.cn/article/24336347982471690a21651f1】。文章转载请联系作者。
评论