1200字范文,内容丰富有趣,写作的好帮手!
1200字范文 > 多线程的等待唤醒机制

多线程的等待唤醒机制

时间:2018-09-15 07:45:36

相关推荐

多线程的等待唤醒机制

一把锁一把钥匙。。就是等待跟唤醒要在同一锁内

/*多线程的等待唤醒机制wait();noyify();*/class Pes{String name;String sex;boolean flag = false;}class Inp implements Runnable{private Pes p;Inp(Pes p){this.p = p;}public void run(){int x=0;while(true){synchronized(p){if(p.flag)try{p.wait();}catch(Exception e){}if(x==0){p.name ="nike";p.sex = "man";}else{p.name = "mike";p.sex = "women";}x= (x+1)%2;p.flag= true;p.notify();}}}}class Out implements Runnable{private Pes p;Out(Pes p){this.p = p;}public void run(){while(true){synchronized(p){if(!p.flag)try{p.wait();}catch(Exception e){}System.out.println(p.name+"..."+p.sex);p.flag = false;p.notify();}}}}class Test_12_3{public static void main(String[] args){System.out.println("Hello Wolrd");Pes p = new Pes();Inp i = new Inp(p);Out o = new Out(p);Thread t1 = new Thread(i);Thread t2 = new Thread(o);t1.start();t2.start();}}//notifyAll();/*wait:notify();notifyAll();都使用在同步中。因为要对持有监视器(锁)的线程操作。所以要使用在同步中,因为只有同步才具有锁。为什么这些操作线程的方法要定义Object类中呢?因为这些方法在操作同步中线程时,都必须要标识它们所操作线程只有的锁。只有用一个锁上的被等待线程。可以被同一个锁上notify唤醒。不可以对不同锁中的线程进行唤醒。也就是说。等待和唤醒必须是同一个锁*/

本内容不代表本网观点和政治立场,如有侵犯你的权益请联系我们处理。
网友评论
网友评论仅供其表达个人看法,并不表明网站立场。