标签:writeable ch 消费者 生产者 consumed produced 试验 Shared public
package t1;
public class TestThread5 {
public static void main(String[] args) {
Shared s = new Shared();
new Producer(s).start();
new Consumer(s).start();
}
}
class Shared {
private char c;
private volatile boolean writeable = true;
synchronized void setSharedChar(char c) {
while (!writeable) {
try {
wait();
} catch (Exception e) {
}
}
this.c = c;
writeable = false;
notify();
}
synchronized char getSharedChar() {
while (writeable) {
try {
wait();
} catch (Exception e) {
}
}
writeable = true;
notify();
return c;
}
}
class Producer extends Thread {
private final Shared s;
Producer(Shared s) {
this.s = s;
}
@Override
public void run() {
for (char ch = 'a'; ch <= 'z'; ch++) {
synchronized (s) {
s.setSharedChar(ch);
System.out.println(ch + " produced by producer");
}
}
}
}
class Consumer extends Thread {
private final Shared s;
public Consumer(Shared s) {
this.s = s;
}
@Override
public void run() {
char ch;
do {
synchronized (s) {
ch = s.getSharedChar();
System.out.println(ch + " consumed by consumer");
}
} while (ch != 'z');
}
}
多次执行打印结果:
a produced by producer
a consumed by consumer
b produced by producer
b consumed by consumer
c produced by producer
c consumed by consumer
d produced by producer
d consumed by consumer
e produced by producer
e consumed by consumer
f produced by producer
f consumed by consumer
g produced by producer
g consumed by consumer
h produced by producer
h consumed by consumer
i produced by producer
i consumed by consumer
j produced by producer
j consumed by consumer
k produced by producer
k consumed by consumer
l produced by producer
l consumed by consumer
m produced by producer
m consumed by consumer
n produced by producer
n consumed by consumer
o produced by producer
o consumed by consumer
p produced by producer
p consumed by consumer
q produced by producer
q consumed by consumer
r produced by producer
r consumed by consumer
s produced by producer
s consumed by consumer
t produced by producer
t consumed by consumer
u produced by producer
u consumed by consumer
v produced by producer
v consumed by consumer
w produced by producer
w consumed by consumer
x produced by producer
x consumed by consumer
y produced by producer
y consumed by consumer
z produced by producer
z consumed by consumer
标签:writeable,ch,消费者,生产者,consumed,produced,试验,Shared,public 来源: https://www.cnblogs.com/dengw125792/p/12599515.html
本站声明: 1. iCode9 技术分享网(下文简称本站)提供的所有内容,仅供技术学习、探讨和分享; 2. 关于本站的所有留言、评论、转载及引用,纯属内容发起人的个人观点,与本站观点和立场无关; 3. 关于本站的所有言论和文字,纯属内容发起人的个人观点,与本站观点和立场无关; 4. 本站文章均是网友提供,不完全保证技术分享内容的完整性、准确性、时效性、风险性和版权归属;如您发现该文章侵犯了您的权益,可联系我们第一时间进行删除; 5. 本站为非盈利性的个人网站,所有内容不会用来进行牟利,也不会利用任何形式的广告来间接获益,纯粹是为了广大技术爱好者提供技术内容和技术思想的分享性交流网站。