线程间通信

一、使用wait/notify实现线程间通信


>   wait/notify

 1. 方法wait(),它是Object类的方法,此方法只能在同步方法,或者同步代码中调用,调用后,释放锁,
 2. notify(),它是Object类的方法,方法也要在同步方法或者同步代码中使用,在调用钱,线程必须获得该对象的对象级别锁,如果有多个线程处于wait()状态,择优线程规划器随机挑出一个处于等待状态的线程,对它进行唤醒,需要注意的是,notify()方法执行后,处于等待状态的线程并不是立即获取锁,需要等待notify()的线程将当前代码执行完毕之后才释放锁
 3. 当线程 处于wait()方法,调用线程对象的interrupt()方法会出现InterruptedException异常
 4. wait(long),超过long这一时间,会自动对线程进行唤醒


二、方法join的使用

>  join方法

 1. join()方法作用:是所属线程对象x正常执行run()方法中的任务,而使当前线程z进行无限期的阻塞,等待x线程销毁后,在执行线程z后边的代码,join()方法内部使用的wait()方法,同步原理与synchorized不同。
 2. join()方法与interrupt()方法遇到,会发生异常,
 3. join(long),参数是设定等待时间
 4. join(long),会释放锁,内部调用wait(),sleep(long),不释放锁

三、ThreadLocal的使用


 1. ThreadLocal作用:每个线程绑定自己的值
 2. 解决变量在不同线程间的隔离性,也就是不同线程拥有自己的值

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值