线程随记

线程之间的通信
  1. 线程之间可以通过某一变量共享来互相通信,利用wait/notify/notifyAll/join等方法来实现

    wait(): 当前线程进入等待队列,并释放锁,等待其他线程唤醒(前提必须拥有锁);
    notify(): 随机唤醒某一个等待线程;
    notifyAll():唤醒所有的等待线程
    join():使得主线程等待,知道子线程执行完毕,如A.join()主线程为main等待,直到A线程执行完毕再继续执行下去
  2. 通过共享内存(利用队列实现生产者和消费者的模式来进行通信)

常见的问题
  1. join和synchronized的区别

    join的内部实现是利用wait()方法进行等待;
    synchronized关键字通过monitorenter和monitorexit来进行同步
  2. join和sleep的区别

    join的内部实现是利用wait()方法进行等待,等待的同时也会释放对资源的锁定
    sleep只是让线程进入睡眠状态,对于资源的占有不会释放,只会释放CPU资源

转载于:https://www.cnblogs.com/hetangyuese/p/11598771.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值