A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© peng891108 中级黑马   /  2016-5-28 22:42  /  2178 人查看  /  2 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

15黑马币
某包子店铺生意火爆,现开5个窗口模拟售卖100个包子,每次每个窗口随机卖出1-5个包子,卖完最后一个包子后提示包子已售完”(必须全部卖出),程序结束.(要求使用Thread类和Runnable两种方式去实现)

最佳答案

查看完整内容

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 vo ...

2 个回复

倒序浏览
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;
                                }
                        }
                }
        }
       
}
回复 使用道具 举报

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 + "包子");
                        }
                }
        }
}
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马