鸟哥Java学习之线程间通信-多线程

1.等待唤醒机制
    涉及的方法:wait(),notify(),notifyAll() 这些方法都必须定义在同步中,明确自己操作的是哪个锁上的线程。
 r.wait(),r 为同步的锁。

2.多生产者多消费者问题
见 ProducerConsumerDemo.java

3.同步代码块,对于锁的操作是隐式的,而新版本中有Lock,jdk1.5以后将同步和锁封装成对象,并将操作锁的隐式方法定义到了该对象中。
     Lock接口替代了同步代码块或同步函数synchronized的使用,可以一个锁上加上多组监视器     Condition接口替代了Object中的wait(),notify(),notifyAll方法,将其进行了封装,变成condition监视器对象,可以任意锁进行组合。
Lock lock = new ReentrantLock;//新建互斥锁
lock.lock(); //获取锁
 lock.unlock(); //释放锁
 Condition producer_con = lock.newCondition();
 producer_con.await();
consumer_con.signal();

4. wait和sleep区别:
    wait可以指定时间也可以不指定,sleep必须指定时间;在同步中时,对cpu的执行权和锁的处理不同,wait释放执行权,释放锁,sleep释放执行权,不释放锁

5.停止线程:stop方法(已过时,不安全)run方法结束
    任务中都会有循环结构,只要控制住循环就可以结束任务,用定义标记
 private boolen flag=true;
  while(flag){}
 public void setflag(){flag=flase;}

    如果线程处于冻结状态,无法读取状态,此时用interrupt()方法将线程从冻结状态强制恢复到运行状态,让线程具备cpu执行资格,但是强制动作会发生InterruptedException,记得要处理,如将标记改为flase。

6.守护线程(后台线程),setDaemon(),在开启线程前使用。当所有前台线程结束时,后台线程自动结束。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值