日期:2014-05-20 浏览次数:20831 次
public class Deadlock { private String a=""; private String b=""; private int n=1; public void write(){ synchronized (a) { try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } synchronized (b) { System.out.println("第" + n+"次被写入"); n++; } } } public void read(){ synchronized (b) { try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } synchronized (a) { System.out.println("第" + n+"次被读取"); n++; } } }
public class MyDeadlock implements Runnable{ private Deadlock dl; public MyDeadlock(Deadlock dl) { this.dl = dl; } @Override public void run() { for(int i=0;i<100;i++){ dl.write(); dl.read(); } }
public class TestDeadlock { public static void main(String[] args) { Deadlock deadlock=new Deadlock(); MyDeadlock md=new MyDeadlock(deadlock); Thread t1=new Thread(md); Thread t2=new Thread(md); t1.start(); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } t2.start(); try { Thread.sleep(500); } catch (InterruptedException e) { // TODO Auto-generated catch block e.printStackTrace(); } }
package com.zzx.study.thread; public class TestDeadLock implements Runnable { public int flag = 1; static Object o1 = new Object(), o2 = new Object(); public void run() { System.out.println("flag=" + flag); if(flag == 1) { synchronized(o1) { try { Thread.sleep(500); } catch (Exception e) { e.printStackTrace(); } synchronized(o2) { System.out.println("1"); } } } if(flag == 0) { synchronized(o2) { try { Thread.sleep(500); } catch (Exception e) { e.printStackTrace(); } synchronized(o1) { System.out.println("0"); } } } } public static void main(String[] args) { TestDeadLock td1 = new TestDeadLock(); TestDeadLock td2 = new TestDeadLock(); td1.flag = 1; td2.flag = 0; Thread t1 = new Thread(td1); Thread t2 = new Thread(td2); t1.start(); t2.start(); } }