死锁(实现)

Posted kaibing

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了死锁(实现)相关的知识,希望对你有一定的参考价值。

public class DeadLock {

    static StringBuffer sb1 = new StringBuffer();
    static StringBuffer sb2 = new StringBuffer();


    public static void main(String[] args) {
        new Thread(()->{
            synchronized(sb1){
                sb1.append("A");
                try {
                    Thread.currentThread().sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized(sb2){
                    sb2.append("B");
                    System.out.println(sb1.toString());
                    System.out.println(sb2.toString());
                }
            }
        }).start();

        new Thread(()->{
            synchronized(sb2){
                sb1.append("C");
                try {
                    Thread.currentThread().sleep(1000);
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }
                synchronized(sb1){
                    sb2.append("D");
                    System.out.println(sb1.toString());
                    System.out.println(sb2.toString());
                }
            }
        }).start();
    }
}

 

以上是关于死锁(实现)的主要内容,如果未能解决你的问题,请参考以下文章

Java并发编程实战 04死锁了怎么办?

55行代码实现Java线程死锁

实现死锁的简单案例和分析是否产生死锁

实现死锁异常的重试逻辑

OS学习笔记死锁总结(含银行家算法的实现Java版)

Java_线程同步和死锁