public class ThreadSyn {
public static void main(String[] args) {
new ThreadSyn();
}
public ThreadSyn() {
Queue queue = new Queue();
Producter p = new Producter(queue);
Consumer c = new Consumer(queue);
p.start();
c.start();
}
// Queue模拟Java线程同步中的生产者消费者仓库、队列。
private class Queue {
int value; // 为了使例子简单,value即为假设长度为1的仓库、队列
boolean full = false;
public synchronized void put(int i) {
if (!full) {
value = i;
full = true;
notify();
}
try {
wait();
} catch (InterruptedException e) {
// e.printStackTrace();
}
}
public synchronized int get() {
if (!full)
try {
wait();
} catch (InterruptedException e) {
// e.printStackTrace();
}
full = false;
notify();
return value;
}
}
// Java线程同步模型-生产者
private class Producter extends Thread {
private Queue q;
public Producter(Queue q) {
this.q = q;
}
public void run() {
for (int i = 0; i < 20; i++) {
System.out.println("生产了:" + i);
q.put(i);
}
}
}
// Java线程同步模型-消费者
private class Consumer extends Thread {
private Queue q;
public Consumer(Queue q) {
this.q = q;
}
public void run() {
while (true) {
System.out.println("消费了:" + q.get());
}
}
}
}
本文由 创作,采用 知识共享署名4.0 国际许可协议进行许可。本站文章除注明转载/出处外,均为本站原创或翻译,转载前请务必署名。最后编辑时间为: 2020/05/07 01:58