JAVA生产者消费者问题
我的代码:
最后的运行结果:
apple已有:201
apple已有:202
apple已有:203
apple剩下:202
apple剩下:201
apple剩下:200
apple剩下:199
apple剩下:198
apple剩下:197
apple剩下:196
apple剩下:195
apple剩下:194
apple剩下:193
apple剩下:192
apple剩下:191
apple剩下:190
apple剩下:189
apple剩下:188
apple剩下:187
apple剩下:186
apple剩下:185
apple剩下:184
apple已有:185
apple已有:186
apple已有:187
apple已有:188
apple已有:189
apple已有:190
apple已有:191
apple已有:192
apple已有:193
apple已有:194
apple已有:195
apple已有:196
apple已有:197
apple已有:198
apple已有:199
apple已有:200
apple已有:201
apple已有:202
apple已有:203
apple已有:204
apple已有:205
apple已有:206
apple剩下:205
apple剩下:204
apple剩下:203
apple剩下:202
apple剩下:201
apple剩下:200
apple剩下:199
apple剩下:198
apple剩下:197
apple剩下:196
apple剩下:195
apple剩下:194
apple剩下:193
apple剩下:192
apple剩下:191
apple剩下:190
apple剩下:189
apple剩下:188
apple剩下:187
apple剩下:186
apple剩下:185
apple剩下:184
apple剩下:183
apple剩下:182
apple剩下:181
apple剩下:180
apple剩下:179
apple剩下:178
apple剩下:177
apple剩下:176
apple剩下:175
apple剩下:174
apple剩下:173
apple剩下:172
apple剩下:171
apple剩下:170
apple剩下:169
apple剩下:168
apple剩下:167
apple剩下:166
apple剩下:165
apple剩下:164
apple剩下:163
apple剩下:162
apple剩下:161
apple剩下:160
apple剩下:159
apple剩下:158
apple剩下:157
apple剩下:156
apple剩下:155
apple剩下:154
apple剩下:153
apple剩下:152
apple剩下:151
apple剩下:150
apple剩下:149
apple剩下:148
apple剩下:147
apple剩下:146
apple剩下:145
apple剩下:144
apple剩下:143
apple剩下:142
apple剩下:141
apple剩下:140
apple剩下:139
apple剩下:138
apple剩下:137
apple剩下:136
apple剩下:135
apple剩下:134
apple剩下:133
apple剩下:132
apple剩下:131
apple剩下:130
apple剩下:129
apple剩下:128
apple剩下:127
apple剩下:126
apple剩下:125
apple剩下:124
apple剩下:123
apple剩下:122
apple剩下:121
apple剩下:120
apple剩下:119
apple剩下:118
apple剩下:117
apple剩下:116
apple剩下:115
apple剩下:114
apple剩下:113
apple剩下:112
apple剩下:111
apple剩下:110
apple剩下:109
apple剩下:108
到这里程序就停止了,我写的死循环不应该停止啊,而且要是是思索的话程序应该是等待,不应该是停止啊,求教各位这是怎么回事。
import org.junit.Test;
public class Main2 {
int MAX_num = 1000;
static int apple = 200;
@Test
public void main() {
Runnable creator = new Runnable() {
public void run() {
create();
}
private void create() {
while (true) {
if (apple < MAX_num) {
synchronized (Main2.this) {
apple++;
System.out.println("apple已有:" + apple);
if (apple == MAX_num) {
try {
Main2.this.notifyAll();
Main2.this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
};
Runnable customeRunnable = new Runnable() {
@Override
public void run() {
custom();
}
private void custom() {
while (true) {
if (apple != 0) {
synchronized (Main2.this) {
apple--;
System.out.println("apple剩下:" + apple);
if (apple == 0) {
Main2.this.notifyAll();
try {
Main2.this.wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
}
}
};
Thread customerThread = new Thread(customeRunnable);
Thread creatorThread = new Thread(creator);
creatorThread.start();
customerThread.start();
}
}
最后的运行结果:
apple已有:201
apple已有:202
apple已有:203
apple剩下:202
apple剩下:201
apple剩下:200
apple剩下:199
apple剩下:198
apple剩下:197
apple剩下:196
apple剩下:195
apple剩下:194
apple剩下:193
apple剩下:192
apple剩下:191
apple剩下:190
apple剩下:189
apple剩下:188
apple剩下:187
apple剩下:186
apple剩下:185
apple剩下:184
apple已有:185
apple已有:186
apple已有:187
apple已有:188
apple已有:189
apple已有:190
apple已有:191
apple已有:192
apple已有:193
apple已有:194
apple已有:195
apple已有:196
apple已有:197
apple已有:198
apple已有:199
apple已有:200
apple已有:201
apple已有:202
apple已有:203
apple已有:204
apple已有:205
apple已有:206
apple剩下:205
apple剩下:204
apple剩下:203
apple剩下:202
apple剩下:201
apple剩下:200
apple剩下:199
apple剩下:198
apple剩下:197
apple剩下:196
apple剩下:195
apple剩下:194
apple剩下:193
apple剩下:192
apple剩下:191
apple剩下:190
apple剩下:189
apple剩下:188
apple剩下:187
apple剩下:186
apple剩下:185
apple剩下:184
apple剩下:183
apple剩下:182
apple剩下:181
apple剩下:180
apple剩下:179
apple剩下:178
apple剩下:177
apple剩下:176
apple剩下:175
apple剩下:174
apple剩下:173
apple剩下:172
apple剩下:171
apple剩下:170
apple剩下:169
apple剩下:168
apple剩下:167
apple剩下:166
apple剩下:165
apple剩下:164
apple剩下:163
apple剩下:162
apple剩下:161
apple剩下:160
apple剩下:159
apple剩下:158
apple剩下:157
apple剩下:156
apple剩下:155
apple剩下:154
apple剩下:153
apple剩下:152
apple剩下:151
apple剩下:150
apple剩下:149
apple剩下:148
apple剩下:147
apple剩下:146
apple剩下:145
apple剩下:144
apple剩下:143
apple剩下:142
apple剩下:141
apple剩下:140
apple剩下:139
apple剩下:138
apple剩下:137
apple剩下:136
apple剩下:135
apple剩下:134
apple剩下:133
apple剩下:132
apple剩下:131
apple剩下:130
apple剩下:129
apple剩下:128
apple剩下:127
apple剩下:126
apple剩下:125
apple剩下:124
apple剩下:123
apple剩下:122
apple剩下:121
apple剩下:120
apple剩下:119
apple剩下:118
apple剩下:117
apple剩下:116
apple剩下:115
apple剩下:114
apple剩下:113
apple剩下:112
apple剩下:111
apple剩下:110
apple剩下:109
apple剩下:108
到这里程序就停止了,我写的死循环不应该停止啊,而且要是是思索的话程序应该是等待,不应该是停止啊,求教各位这是怎么回事。
...全文
相关推荐
生产者消费者问题 Java实现
生产者消费者问题 Java实现 线程同步 线程通信生产者消费者问题 Java实现 线程同步 线程通信生产者消费者问题 Java实现 线程同步 线程通信
Java实现生产者消费者问题详解与代码
本文还有配套的精品资源,点击获取 简介:生产者消费者问题作为操作系统中多线程编程的经典案例,涉及进程间同步与通信。Java利用其并发工具类,如 BlockingQueue ,提供了有效解决方案。本文提供了一个Java代码实现,通过生产者线程向缓冲区投放产品和消费者线程从缓冲区取走产品来阐述问题。详细解释了如何使用 put() 和 take...
Java——生产者-消费者问题
本程序模拟实现了“生产者-消费者”问题的解决过程,用图形界面动态演示了P、V操作过程以及生产者、消费者进程之间的工作流程。 本程序使用的算法是典型的P、V操作使用信号量解决“生产者-消费者”问题。 本程序在界面上使用了Java的swing接口函数,用矩形条表示生产者进程中待生产的产品,并设置了三个分区分别表示生产者进程待生产的产品、公共缓冲池中已生产的产品和消费者进程已消费的产品,以动画的效果动态演示了待生产产品变成消费者进程中已消费产品的过程,以及在这一过程中生产者进程和消费者进程协调工作的过程。 在程序运行过程中使用了两个生产者线程和两个消费者线程并发工作,并使用了线程随机休眠的策略,
java生产者消费者问题
java生产者消费者问题 java生产者消费者问题 java生产者消费者问题 java生产者消费者问题 java生产者消费者问题
java生产者消费者问题 实验报告
java实现生产者消费者问题,实验报告,很好的参考材料


Java SE
