java20(多线程--06 停止线程与守护线程与死锁)

停止线程:

        stop方法已过时。那么该如何停止线程呢?只有一种,run方法结束

        开启多线程运行,运行代码通常都是循环结构。因此只要能控制住循环就可以让run方法结束,就可以让线程结束。我们可以通过flag的真假来控制线程的运行与结束

        但是有种特殊情况(线程处于阻塞状态时候,他并不会读取flag标记),这时候我们就可以使用interrupt()方法

13091615-3a2851efc7891e9c.png

守护线程:

        setDaemon  当正在运行的进程都是守护进程,java虚拟机退出    

13091615-4b26a500982d4e97.png
13091615-790a0420518ee6bc.png

死锁: 

        同步中嵌套同步

        例如:创建两个字符串a和b,再创建两个线程A和B,让每个线程都用synchronized锁住字符串(A先锁a,再去锁b;B先锁b,再锁a),如果A锁住a,B锁住b,A就没办法锁住b,B也没办法锁住a,这时就陷入了死锁。 

13091615-969f9e620a54ebdc.png
13091615-18968f22294bb206.png

            

猜你喜欢

转载自blog.csdn.net/weixin_34033624/article/details/87054195