java同步问题
Bread.java
public class Bread {
private int counts;
private static int flag;
public Bread(int counts) {
this.counts = counts;
Bread.flag = 0;// 没有面包
}
public synchronized void set() {
if (flag != 0) {
try {
wait();
} catch (InterruptedException e) {
}
}
System.out.println("开始生产");
for (int i = 1; i <= counts; ++i) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
System.out.println(i + "个");
flag++;
}
System.out.println("生产完毕");
notifyAll();
}
public synchronized void get() {
if (flag == 0) {
System.out.println("启动消费");
System.out.println("还没有生产出面包,等待中...");
try {
wait();
} catch (InterruptedException e) {
}
}
System.out.println("开始消费");
for (int i = counts; i >= 1; --i) {
try {
Thread.sleep(1000);
} catch (InterruptedException e) {
}
System.out.println(i + "个");
flag--;
}
System.out.println("消费完毕。");
notify();
}
}
Customor.java
public class Customor implements Runnable{
Bread bre = new Bread(5);
public void run() {
bre.get();
}
}
Productor.java
public class Prodctor implements Runnable {
Bread bre = new Bread(5);
public void run() {
bre.set();
}
}
BreadMain.java
public class BreadMain {
public static void main(String[] args){
Prodctor pro = new Prodctor();
Customor cut = new Customor();
Thread proct = new Thread(pro);
Thread custom = new Thread(cut);
custom.start();
proct.start();
}
}
程序 要求:
(1) 一次 生产 5个面包,一次 消费 5个面包。
(2) 注意 同步 机制 , wait()方法 ,no tify() 方法 的使用。
各位看看有啥问题???谢谢!!!
...全文
相关推荐
Java使用同步方法解决银行取钱的安全问题案例分析
主要介绍了Java使用同步方法解决银行取钱的安全问题,结合具体案例形式分析了java同步方法实现多线程安全操作银行取钱问题,需要的朋友可以参考下
Java同步代码块解决银行取钱的安全问题实例分析
主要介绍了Java同步代码块解决银行取钱的安全问题,结合实例形式分析了java基于线程的同步问题实现与使用相关操作技巧,需要的朋友可以参考下
以银行取钱为例模拟Java多线程同步问题完整代码
主要介绍了以银行取钱为例模拟Java多线程同步问题完整代码,具有一定借鉴价值,需要的朋友可以参考下。
Java线程间通信不同步问题原理与模拟实例
主要介绍了Java线程间通信不同步问题,结合实例形式分析了java线程间通信不同步问题的原理并模拟实现了线程间通信不同步情况下的异常输出,需要的朋友可以参考下
java同步互斥信号量问题
java同步互斥信号量问题 多线程的创建同步互斥函数P(),V()


Java SE
