欢迎您访问程序员文章站本站旨在为大家提供分享程序员计算机编程知识!
您现在的位置是: 首页

多线程死锁现象

程序员文章站 2022-05-05 22:46:16
...

什么是多线程死锁?

死锁是指两个或两个以上的线程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。此时称系统处于死锁状态或系统产生了死锁,这些永远在互相等待的进程称为死锁进程。

死锁代码:

package com.jvm.test;

class ThreadTrain2 implements Runnable {
    public boolean flag = true;
    private Object oj = new Object();

    @Override
    public void run() {
        if (flag) {
            while (true) {
                synchronized (oj) {
                    sale();
                }
            }

        } else {
            while (true) {
                sale();
            }
        }
    }

    public synchronized void sale() {
        synchronized (oj) {
        }
    }
}

public class ThreadDemo2 {
    public static void main(String[] args) throws InterruptedException {
        ThreadTrain2 threadTrain1 = new ThreadTrain2();
        Thread t1 = new Thread(threadTrain1, "①号窗口");
        Thread t2 = new Thread(threadTrain1, "②号窗口");
        t1.start();
        Thread.sleep(40);
        threadTrain1.flag = false;
        t2.start();
    }
}

运行检测到死锁

多线程死锁现象