java20(多线程--06 停止线程与守护线程与死锁)
2019-01-17 本文已影响75人
机智的老刘明同志
停止线程:
stop方法已过时。那么该如何停止线程呢?只有一种,run方法结束
开启多线程运行,运行代码通常都是循环结构。因此只要能控制住循环就可以让run方法结束,就可以让线程结束。我们可以通过flag的真假来控制线程的运行与结束
但是有种特殊情况(线程处于阻塞状态时候,他并不会读取flag标记),这时候我们就可以使用interrupt()方法
守护线程:
setDaemon 当正在运行的进程都是守护进程,java虚拟机退出
死锁:
同步中嵌套同步
例如:创建两个字符串a和b,再创建两个线程A和B,让每个线程都用synchronized锁住字符串(A先锁a,再去锁b;B先锁b,再锁a),如果A锁住a,B锁住b,A就没办法锁住b,B也没办法锁住a,这时就陷入了死锁。