多线程 等待唤醒机制
一.线程间通信
概念: 多个线程在处理同一个资源,但是处理的动作(线程的任务)却不相同
原因: 多个线程并发执行时,在默认情况下,Cpu是随机切换线程的,如果我们需要多个线程共同完成一件任务,并且我们希望他们有规律的执行,那么多线程之间需要一些协调通信,帮我们多线程共同操作一份数据
二.等待唤醒机制
wait / notify就是线程间的一种协作机制,可以完成线程间的通信
相关API:
void wait(): 让线程等待,直到有其他线程调用notify或者notifyAll唤醒这个线程
void wait(long timeout): 让线程等待,直到有其他线程调用notify或者notifyAll,或者等待时间到了线程自己会醒
void notify(): 唤醒一个线程
void notifyAll: 唤醒所有线程
注意:
1. 上面的方法虽然是Object中的方法,但是不能直接通过对象调用,要放在同步代码块中,使用锁对象调用
2. notify方法唤醒的是当前同步代码块中等待的线程
3. 线程调用wait 方法后,会释放掉所对象
wiia方法和sleep方法的区别:
wait会释放锁
sleep不会释放锁
posted on 2018-09-05 17:28 shaoshuai888 阅读(288) 评论(0) 编辑 收藏 举报