黑马程序员技术交流社区

标题: 求解答 [打印本页]

作者: 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