Java 多线程通信,
分享于 点击 28513 次 点评:128
Java 多线程通信,
/**
* 这个案例说是生产者与消费者的故事,柜台卖蛋糕,消费者要等生产者做好蛋糕才
* 能获取到,也就是做一个卖一个。
* Created by lcj on 16/10/11.
*/
public class ThreadInfoExchange {
public static void main(String arg[]) {
Counter c = new Counter();
Producer p = new Producer(c);
Customer cus = new Customer(c);
p.start();
cus.start();
}
static class Counter {
private int cake = 1;
private boolean a = false;
synchronized public int getContent() {
while (a == false) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
a = false;
notify();
return cake;
}
synchronized public void setContent(int content) {
while (a == true) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
this.cake = content;
a = true;
notify();
}
}
static class Producer extends Thread {
Counter c;
int i;
public Producer(Counter c) {
this.c = c;
}
@Override
public void run() {
super.run();
while (true) {
try {
sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
c.setContent(i++);
}
}
}
static class Customer extends Thread {
Counter c;
public Customer(Counter c) {
this.c = c;
}
@Override
public void run() {
super.run();
while (true) {
System.out.println("出售了" + c.getContent() + "蛋糕");
try {
sleep(200);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
相关文章
- 暂无相关文章
用户点评