IT十八掌作业_java基础第八天_多线程

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了IT十八掌作业_java基础第八天_多线程相关的知识,希望对你有一定的参考价值。

1. 5辆汽车过山洞,依次经过山洞。每辆车通过山洞花费10秒,使用多线程实现。

2. 用多线程模拟蜜蜂和熊的关系。

   蜜蜂是生产者,熊是消费者。蜜蜂生产蜂蜜是累加的过程,熊吃蜂蜜是批量(满100吃掉)的过程。

   生产者和消费者之间使用通知方式告知对方。注意不能出现死锁的现象。

----------------------------------------------------------------------------------------------


  1. public class Box
    {
        private final int Max=100;
        private int Size=0;

        public synchronized void add(){
            if(Size<Max){
                Size++;
                System.out.println("蜂蜜增加到了"+Size+"个");
                this.notifyAll();
                //如果成了通知别的参与者来取锁
                //熊一定被唤醒
            }else{
                
                this.wait();
                //如果大于等于100当前线程休眠
                //this.notify();
                //this.wait();
            }
        }
        public synchronized void eat(){
            if(Size>=Max){
                Size=0;
                System.out.println("吃完了蜂蜜");
                this.notifyAll();
                //唤醒所有蜜蜂可以采蜜了
            }else{
                this.wait();
                //如果没有到100个熊就等待,将自己加入等待Box的队列
            }
        }
    }
    public class Bear extends Thread
    {
        private Box box;
        public Bear (Box box){
            this.box=box;
        }
        public void run(){
         while(true){
            box.eat();
            }
        }
    }

    public class Bee extends Thread
    {   
        private Box box;
        //蜜蜂有一个Box只有大家的Box是同一个的时候线程才同步
        public Bee (Box box){
            this.box=box;
        }
        public void run(){
            
            while(true){
                box.add();
            }
        }
          
    }

以上是关于IT十八掌作业_java基础第八天_多线程的主要内容,如果未能解决你的问题,请参考以下文章

IT十八掌第八天总结(含作业)

IT十八掌作业_java基础第九天_多线程自动拆装箱

IT十八掌作业_java基础第九天_多线程自动拆装箱

IT十八掌作业_java基础第十七天_QQ案例

IT十八掌作业_java基础第26天_Java基础总结/虚拟机基础

IT十八掌作业_java基础第25天_NIO