本帖最后由 sepallen 于 2015-4-10 18:18 编辑
跟着毕老师视频练习代码发现程序执行不动了,不应该发生死锁吧?
代码如下:
package com.javastudy.cn;
public class Lesson25 {
/**
* @param args
*/
public static void main(String[] args) {
Reource r = new Reource();
Producer pro = new Producer(r);
Consumer con = new Consumer(r);
Thread t1 = new Thread(pro);
Thread t2 = new Thread(con);
t1.start();
t2.start();
}
}
class Reource{
private String name;
private int count =1;
private boolean flag = false;
public synchronized void set(String name){
if(flag)
try{wait();}catch(Exception e){}
this.name = name+"--"+count++;
System.out.println(Thread.currentThread().getName()+"生产"+this.name);
flag = true;
notify();
}
public synchronized void out(){
if(!flag)
try{wait();}catch(Exception e){}
System.out.println(Thread.currentThread().getName()+"消费。。。。"+this.name);
flag = false;
notify();
}
}
class Producer implements Runnable{
private Reource res;
Producer(Reource res){
this.res = res;
}
public void run(){
while(true){
res.set("+商品+");
}
}
}
class Consumer implements Runnable{
private Reource res;
Consumer(Reource res){
this.res = res;
}
public void run(){
res.out();
}
}
|
|