黑马程序员 让某个线程结束的几种方法

---------------------- android培训java培训、期待与您交流! ---------------------- 

我们使用多线程一般是因为好几个线程都要进行循环,所以run方法里一般都是循环体。
只有run方法结束(也就是循环体不符合判断条件了,跳出)才表示这个线程结束。
但有时候一个线程处于冻结状态(wait或sleep很长时间),自己无法去判断循环体的结束条件,且没有别的线程来唤醒它,就算别的线程运行完了,程序也一直挂着,并不做事,那么我们如何让它结束线程呢?

Thread类中提供了这些方法:

1、 sopt
此方法在1.5版本开始就过时了,不再用。

2、interrupt
主函数里使用thread1.interrupt(),则 线程冻结以后, 中断上述冻结状态,强制恢复运行,就会 去判断循环体的结束条件,从而结束线程。 interrupt可用于对wait,sleep,join的中断。

3、setDaemon
必须在启动线程之前调用, thread1. setDaemon(), 将当前线程记为守护(即后台)线程。
作用:前台所有线程运行结束后,所有后台线程自动结束,退出jvm。

4、join  注意:要抛出InterruptionException,或内部处理
A线程里开启 thread1后若写了 thread1.join(),则A把cpu执行权给 thread1,知道 thread1完成了才能执行A。
5、yield
并不是结束线程,只是暂停一下当前正在执行的线程,让其他线程增加获取执行权的机会。


 -------------------- ASP.Net+Android+IOS开发.Net培训、期待与您交流! ----------------------
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值