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

停止线程:

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

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

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

java20(多线程--06 停止线程与守护线程与死锁)_第1张图片

守护线程:

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

java20(多线程--06 停止线程与守护线程与死锁)_第2张图片

死锁: 

        同步中嵌套同步

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

java20(多线程--06 停止线程与守护线程与死锁)_第3张图片
java20(多线程--06 停止线程与守护线程与死锁)_第4张图片

            

你可能感兴趣的:(java20(多线程--06 停止线程与守护线程与死锁))