浏览 2293 次
锁定老帖子 主题:线程死锁
该帖已经被评为新手帖
|
|
---|---|
作者 | 正文 |
发表时间:2007-12-03
package ch11; public class LockDemo implements Runnable { public int i=1;//用于判断占用的情况 //设为静态的原因,是因为只有两台打印机 static Object print1=new Object();//第一台打印机对象 static Object print2=new Object();// 第二台打印机对象 public void run() { //第一种情况是先占用第一台打印机,并等待第二台打印机 if(i==0) { synchronized(print1) { System.out.println("print1被占用等待printl2"); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } synchronized(print2) { System.out.println("print2被获取,任务完成"); } } } //第二种情况,占用第二台打印机,并等待第一台打印机 if(i==1) { synchronized(print2) { System.out.println("print2被占用等待print1"); try { Thread.sleep(1000); } catch (InterruptedException e) { // TODO 自动生成 catch 块 e.printStackTrace(); } synchronized(print1) { System.out.println("print1被获取,任务完成");; } } } } public static void main(String[] args) { LockDemo t1=new LockDemo(); LockDemo t2=new LockDemo(); t1.i=0; t2.i=1; Thread th1=new Thread(t1); Thread th2=new Thread(t2); th1.start(); th2.start(); } } 声明:ITeye文章版权属于作者,受法律保护。没有作者书面许可不得转载。
推荐链接
|
|
返回顶楼 | |
发表时间:2008-11-16
看了这个我基本上都懂了!很经典的一个例子!还是需要自己写了才知道!才能明白的
|
|
返回顶楼 | |