总结一下多线程之中重要点——等待唤醒机制
先用一个通俗的例子来说明等待唤醒机制的原理,小时候,我们都一起玩过一个游戏,名字想不起来了,就是一伙小朋 友,抽出其中最倒霉的一个,其他的就到处跑,逃离最倒霉的,规则:当最倒霉的小盆友要抓住其他小盆友中的一个时,如果反应的快时,说一声“木(定,就是不能动)”,倒霉的小盆友就不能抓他,而去抓其他的,只有等到其他的小盆友来碰他(木的那个)一下,才可以被解救,又当全部木完时,最倒霉的小盆友就变幸运了,同时全部解救。
分析:最倒霉的小盆友就如CPU,做着切换动作, 其中木的那个小盆友就如一个线程,“木”就如wait(),碰他一下就如notify(),全部解救就如notifyAll(),
线程之间的关系是平等的,彼此之间并不存在任何依赖,它们各自竞争CPU资源,互不相让,并且还无条件地阻止其他线程对共享资源的异步访问。然而,也有很多现实问题要求不仅要同步的访问同一共享资源,而且线程间还彼此牵制,通过相互通信来向前推进。
注意点:1在循环式选择上,最好使用while循环,他是需要先判断的,
2当有很多线程时,唤醒用notifyAll();
简单的等待唤醒机制代码: