zoukankan      html  css  js  c++  java
  • java线程学习第一天__低配版的卖面包机

    package Thread;

    import javax.xml.bind.ValidationEvent;

    class snacks{
        private int  SaledSnacks=0;
        private int  TotalSnacksNum=10; //初始化小吃店开始有10个面包
        private int  TOTALtimeOFSALE=0;
        public synchronized boolean salesnacks() {
            if (TotalSnacksNum>0) {
                SaledSnacks++;
                TotalSnacksNum--;
                TOTALtimeOFSALE++;
                System.out.println(Thread.currentThread().getName()+"卖出一个面包");
                return true;
            }else {
                System.out.println("目前已经卖完了,需要等会儿才有");
                return false;
            }
        }
        public synchronized boolean makesnacks() {
                TotalSnacksNum++;
                TOTALtimeOFSALE+=3;
                System.out.println(Thread.currentThread().getName()+"做出一个面包");
                return true;
        }
    }
    class SaleSnacks extends Thread{
        private snacks Snacks=new snacks();
        public SaleSnacks(String name,snacks s) {
            super(name);
            Snacks=s;
        }

        public void Validation() {
            while(Snacks.salesnacks()) {
                try {
                    Thread.sleep(1000);
                } catch (InterruptedException e) {
                }    
            }
                if (!Snacks.salesnacks()) {
                    try {
                        Thread.sleep(5000);
                        while(Snacks.salesnacks()) {
                            try {
                                Thread.sleep(1000);
                            } catch (InterruptedException e) {
                            }    
                        }
                        
                    } catch (Exception e) {
                        // TODO: handle exception
                    }
                    
                }
            Validation();
        }
        @Override
        public void run() {
            Validation();
        }
    }
    class MakeSnacks extends Thread{
        private snacks Snacks=new snacks();
        public MakeSnacks(String name,snacks s) {
            super(name);
            Snacks=s;
        }
        @Override
        public void run() {
            while(Snacks.makesnacks()) {
                try {
                    Thread.sleep(3000);
                } catch (InterruptedException e) {
                }
                
            }
        }
    }

    public class Thread_synchronized {
        public static void main(String[] args) throws InterruptedException {
         System.out.println("开始卖 snack!!!");
             snacks AIMSnackShop=new snacks();
             SaleSnacks sale1=new SaleSnacks("windows:A", AIMSnackShop);
             SaleSnacks sale2=new SaleSnacks("windows:B", AIMSnackShop);
             SaleSnacks sale3=new SaleSnacks("windows:C", AIMSnackShop);
             MakeSnacks makeSnacks =new MakeSnacks("Make: A", AIMSnackShop);
             sale1.start();
             sale2.start();
             sale3.start();
             makeSnacks.start();
             try {
                Thread.sleep(500000);
            } catch (IllegalThreadStateException e) {
                e.printStackTrace();
            }
        }
    }

  • 相关阅读:
    猜数字游戏,猜三次都不对,则结束游戏,猜一次就成功,结束游戏
    用return关键字实现1——100累加求和,返回总和并接收输出
    用return关键字实现求和操作
    return关键字的作用和接受实验
    数组各元素随机赋值、求和、求平均值、求最大值的各类测试(一维数组)
    日期下拉选择
    22--
    css 17课--
    css盒模型
    css学习
  • 原文地址:https://www.cnblogs.com/laiso/p/8544259.html
Copyright © 2011-2022 走看看