public class Deadlock implements Runnable { //定一个标识符 int flay=1; static Object o1= new Object(); static Object o2 = new Object(); @Override public void run() { System.out.println("flay"+flay); if(flay==1){ //是1就锁住o1 synchronized (o1){ try { Thread.sleep(100); } catch (InterruptedException e) { e.printStackTrace(); } //筷子o2 synchronized (o2){ System.out.println("2"); } } } if (flay == 0) { synchronized (o2) { try { Thread.sleep(200); } catch (InterruptedException e) { e.printStackTrace(); } synchronized (o1) { System.out.println("刀叉"); } } } } public static void main(String[] args) { Deadlock d1 = new Deadlock(); Deadlock d2 = new Deadlock(); d1.flay =1; d2.flay =0; new Thread(d1).start(); new Thread(d2).start(); } }
java 线程案列:死锁
最新推荐文章于 2024-09-15 19:46:31 发布