多线程的认识2

1.Thread 的常见构造方法

 

 中断一个线程的方法

使用 thread 对象的 interrupted() 方法通知线程结束 .
以下是代码:

运行结果:

 thread 收到通知的方式有两种:

1. 如果线程因为调用 wait/join/sleep 等方法而阻塞挂起,则以 InterruptedException 异常的形式通
知, 清除中断标志
当出现 InterruptedException 的时候 , 要不要结束线程取决于 catch 中代码的写法 . 可以选择
忽略这个异常 , 也可以跳出循环结束线程
2. 否则,只是内部的一个中断标志被设置, thread 可以通过
Thread.interrupted() 判断当前线程的中断标志被设置, 清除中断标志
Thread.currentThread().isInterrupted() 判断指定线程的中断标志被设置, 不清除中断标志

 这种方式通知收到的更及时,即使线程正在 sleep 也可以马上收到。

观察标志位是否清除
标志位是否清除 , 就类似于一个开关 .
Thread.isInterrupted() 相当于按下开关 , 开关自动弹起来了 . 这个称为 " 清除标志位 "
Thread.currentThread().isInterrupted() 相当于按下开关之后 , 开关弹不起来 , 这个称为
" 不清除标志位 ".
使用 Thread.isInterrupted() , 线程中断会清除标志位

运行结果:

 

使用 Thread.currentThread().isInterrupted() , 线程中断标记位不会清除 .

运行结果:

 

 等待一个线程-join()

有时,我们需要等待一个线程完成它的工作后,才能进行自己的下一步工作。例如,张三只有等李四转账成功,才决定是否存钱,这时我们需要一个方法明确等待线程的结束。

运行结果:

 

 

 

 

评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值