您的位置:首页 > 职场人生

黑马程序员 java基础Thread生产者消费者

2014-03-29 02:24 495 查看
----------- android培训java培训、java学习型技术博客、期待与您交流! ------------

public class ProducerConsumerDemo {

/**

* @param args

*/

public static void main(String[] args) {

// TODO Auto-generated method stub

Resource r = new Resource();

Producer pro = new Producer(r);

Consumer con = new Consumer(r);

new Thread(pro).start();

new Thread(con).start();

}

}

class Resource {

private String name;

private int count = 1;

private boolean flag = false;

public synchronized void set(String name) {

if (flag) { //当2个以上的线程这里不用if改用while 下面不用notifyAll

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

}

this.name = name + "---" + count++;

System.out.println(Thread.currentThread().getName() + "..生产者......."

+ this.name);

flag = true;

this.notify();

}

public synchronized void out() {

if (!flag)

try {

wait();

} catch (InterruptedException e) {

// TODO Auto-generated catch block

e.printStackTrace();

}

System.out.println(Thread.currentThread().getName() + "..消费者.."

+ this.name);

flag = false;

this.notify();

}

}

// 生产者

class Producer implements Runnable {

private Resource res;

public Producer(Resource res) {

// TODO Auto-generated constructor stub

this.res = res;

}

@Override

public void run() {

// TODO Auto-generated method stub

while (true) {

res.set("+商品+");

}

}

}

// 消费者

class Consumer implements Runnable {

private Resource res;

public Consumer(Resource res) {

// TODO Auto-generated constructor stub

this.res = res;

}

@Override

public void run() {

// TODO Auto-generated method stub

while (true) {

res.out();

}

}

}

----------------------- android培训java培训、java学习型技术博客、期待与您交流! ----------------------

详情请查看:http://edu.csdn.net/heima
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: 
相关文章推荐