概述
创建线程通过LockSupport.park()打断自己
主线程通过 interrupt()、unPark()唤醒线程
下面以 interrupt() 来唤醒park()
import java.util.concurrent.locks.LockSupport;
import static java.lang.Thread.currentThread;
public class InterruptDemo02_park {
public static void park() throws InterruptedException {
Thread t1 = new Thread(()->{
System.out.println("park......");
LockSupport.park();
System.out.println("unpark......");
System.out.println("打断状态:"+Thread.currentThread().interrupted());
LockSupport.park();
System.out.println("unpark......");
},"t1");
t1.start();
Thread.sleep(2000);
t1.interrupt();
}
}
【注:】
- 如果要执行打断的线程标记是true,LockSupport.park()无法执行,因为认为标记既然已经true了,那就是已经阻塞了,没必要再执行了,因此用Thread.currentThread().interrupted()判断当前线程标记,此方法最后会把标记刷回false
- park中断是WAITTING状态,可以通过getState()查看
- interrupt打断标记仅支持当前的park中断和sleep中断(即两阶段中止),其余比如wait()、join()、获取synchronized锁时均无法支持
最后
以上就是大意期待为你收集整理的09-park线程终止模式的全部内容,希望文章能够帮你解决09-park线程终止模式所遇到的程序开发问题。
如果觉得靠谱客网站的内容还不错,欢迎将靠谱客网站推荐给程序员好友。
本图文内容来源于网友提供,作为学习参考使用,或来自网络收集整理,版权属于原作者所有。
发表评论 取消回复