最简单的java死锁例子

xiaoxiao2021-02-28  61

public class A { public synchronized void a(B b){ System.out.println("Enter A, a function"); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } b.print(); } public synchronized void print(){ System.out.println("print A"); } }

public class B { public synchronized void b(A a){ System.out.println("enter B, b function"); try { Thread.sleep(100); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } a.print(); } public synchronized void print(){ System.out.println("Print B"); } }

public class Test implements Runnable{ A a = new A(); B b = new B(); public void run(){ b.b(a); } public void init(){ a.a(b); } public static void main(String[] args) { // TODO Auto-generated method stub Test t = new Test(); new Thread(t).start(); // try { // Thread.sleep(1000); // } catch (InterruptedException e) { // // TODO Auto-generated catch block // e.printStackTrace(); // } t.init(); } } 如果在主线程main中加上Thread.sleep(1000),将达到死锁的效果。

转载请注明原文地址: https://www.6miu.com/read-49137.html

最新回复(0)