8.20笔记

复习{  
 多线程: 
   1.一个线程执行 一个任务,任何和任务之间执行相互不干扰  , 迅雷下载
   2.多个线程共享一个资源, 小朋友抢苹果,资源的竞争问题,必须加         
        同步锁 synchronized 
         1.同步代码块儿 
               synchronized(this){ this就代表锁的 标记 ,线程必须 去抢这个
                    锁的标记,谁抢到了,谁就执行当前的 线程体,
                    在一个时间段内,只允许一个线程持有该 锁的标记 
               }
         2.同步方法    这个最常用
              public synchronized void eat(){
              
              } 

   死锁问题: 什么是死锁?
               死锁是我们在使用synchronized关键字,完成同步操作的时候
               对synchronized使用不当,导致程序无法正常向下执行的一种
               现象;
  哲学家就餐问题: 我们是正常编写了一个程序,保证三个哲学家都能就餐
                     也编写了死锁程序;            
================================================================
线程之间的通讯:
   4.生产者与消费者模式
   
         只有线程和线程之间 在相互通知的情况下程序才能正常执行

在这个案例中我们会使用Object类的方法:
     1.wait(); 等待
       wait(long m);
     2.notify(); 通知
     3.notifyAll(); 通知所有
     
   Cooker extends Thread: 厨师生产面包     
   Saler extends Thread: 售卖面包

   Shop: 商店
          生产面包 make()
            售卖面包 sale()

 学习的是线程之间通讯的原理, 掌握线程和线程之间是如何通讯的?
   notify();
   notifyAll();
   wait();
   
  sleep方法和 wait方法的区别: 
   1.sleep方法 是 Thread 类的
     wait方法是 Object类的
     
   2.wait方法必须放在同步锁中使用  
     sleep方法在什么情况下都可以
   
   3.wait方法必须通过notify ,notifyAll唤醒
         才能继续执行,不能自动释放
     sleep方法 当时间片结束,自动释放
   
   4.wait是让线程进入等待池,通过notify 进入到锁池
        去抢锁标记
        sleep方法是让线程进入阻塞状态,自动释放回到就绪
        
 必须掌握线程生命周期图;  

  
 
                     
  


}

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值