黑马程序员技术交流社区
标题: 求解答 [打印本页]
作者: peng891108 时间: 2016-5-28 22:42
标题: 求解答
某包子店铺生意火爆,现开5个窗口模拟售卖100个包子,每次每个窗口随机卖出1-5个包子,卖完最后一个包子后提示”包子已售完”(必须全部卖出),程序结束.(要求使用Thread类和Runnable两种方式去实现)
作者: lidongzhe 时间: 2016-5-28 22:42
import java.util.Random;
public class Demo7 {
public static void main(String[] args) {
MyRunnable1 mr = new MyRunnable1();
new Thread(mr, "窗口1").start();
new Thread(mr, "窗口2").start();
new Thread(mr, "窗口3").start();
new Thread(mr, "窗口4").start();
}
}
class MyRunnable1 implements Runnable{
private int baozi = 100;//共享资源
private boolean flag = false;
@Override
public void run() {
String name = Thread.currentThread().getName();
while(true){
synchronized ("锁") {
Random random = new Random();
int i = random.nextInt(5) + 1;
if(baozi > 0){
if(baozi>=i){
System.out.println(name + "卖出了" + i + "个包子" + " 还剩" + (baozi = baozi-i) + "个包子");
}
}else{
System.out.println("包子以卖完");
break;
}
}
}
}
}
作者: 董事长 时间: 2016-7-4 12:24
public class Demo2 {
/*
* 某包子店铺生意火爆,现开5个窗口模拟售卖100个包子,每次每个窗口随机卖出1-5个包子,
* 卖完包子最后一个包子后提示"包子已售完"(必须全部卖出),程序结束(要求使用Thread类和Runnable两种方式去实现)
*/
public static void main(String[] args) {
new Thread("1").start();
new Thread("2").start();
new Thread("3").start();
new Thread("4").start();
new Thread("5").start();
}
}
class MyThread extends Thread {
private int baozi = 100;
Random r = new Random();
public void run() {
while (true) {
synchronized (r) {
if (baozi <=0) {
}
int num = r.nextInt(5) + 1;
System.out.println(Thread.currentThread().getName()+"卖出" + num + "包子");
}
}
}
}
| 欢迎光临 黑马程序员技术交流社区 (http://bbs.itheima.com/) |
黑马程序员IT技术论坛 X3.2 |