黑马程序员java教程线程间通信

黑马程序员java教程线程间通信

ID:34504506

大小:102.83 KB

页数:5页

时间:2019-03-07

黑马程序员java教程线程间通信_第1页
黑马程序员java教程线程间通信_第2页
黑马程序员java教程线程间通信_第3页
黑马程序员java教程线程间通信_第4页
黑马程序员java教程线程间通信_第5页
资源描述:

《黑马程序员java教程线程间通信》由会员上传分享,免费在线阅读,更多相关内容在工程资料-天天文库

1、线程间通信线程间通信涉及的方法  多个线程在处理统一资源,但是任务却不同,这时候就需要线程间通信。  等待/唤醒机制涉及的方法:  1.wait():让线程处于冻结状态,被wait的线程会被存储到线程池中。  2.notify():唤醒线程池中的一个线程(任何一个都有可能)。  3.notifyAll():唤醒线程池中的所有线程。  P.S.  1、这些方法都必须定义在同步中,因为这些方法是用于操作线程状态的方法。  2、必须要明确到底操作的是哪个锁上的线程!  3、wait和sleep区别?      1)wait可以指定时间也可以不指定。sleep必

2、须指定时间。      2)在同步中时,对CPU的执行权和锁的处理不同。      wait:释放执行权,释放锁。      sleep:释放执行权,不释放锁。  为什么操作线程的方法wait、notify、notifyAll定义在了object类中,因为这些方法是监视器的方法,监视器其实就是锁。锁可以是任意的对象,任意的对象调用的方式一定在object类中。线程间通信线程间通信涉及的方法  多个线程在处理统一资源,但是任务却不同,这时候就需要线程间通信。  等待/唤醒机制涉及的方法:  1.wait():让线程处于冻结状态,被wait的线程会被存储到线

3、程池中。  2.notify():唤醒线程池中的一个线程(任何一个都有可能)。  3.notifyAll():唤醒线程池中的所有线程。  P.S.  1、这些方法都必须定义在同步中,因为这些方法是用于操作线程状态的方法。  2、必须要明确到底操作的是哪个锁上的线程!  3、wait和sleep区别?      1)wait可以指定时间也可以不指定。sleep必须指定时间。      2)在同步中时,对CPU的执行权和锁的处理不同。      wait:释放执行权,释放锁。      sleep:释放执行权,不释放锁。  为什么操作线程的方法wait、no

4、tify、notifyAll定义在了object类中,因为这些方法是监视器的方法,监视器其实就是锁。锁可以是任意的对象,任意的对象调用的方式一定在object类中。  生产者-消费者问题:1.classResource{2.    privateStringname;3.    privateStringsex;4.    privatebooleanflag=false;5.6.    publicsynchronizedvoidset(Stringname,Stringsex){7.        if(flag)8.            try{

5、9.                this.wait();10.            }catch(InterruptedExceptione){11.                e.printStackTrace();12.            }13.        this.name=name;14.        this.sex=sex;15.        flag=true;16.        this.notify();17.    }18.    19.    publicsynchronizedvoidout(){20. 

6、       if(!flag)21.            try{22.                this.wait();23.            }catch(InterruptedExceptione){24.                e.printStackTrace();25.            }26.        System.out.println(name+"..."+sex);27.        flag=false;28.        this.notify();29.    } 30.}31.32.//

7、输入1.classInputimplementsRunnable{2.    Resourcer;3.    Input(Resourcer){4.        this.r=r;5.    }6.7.    publicvoidrun(){8.        intx=0;9.        while(true){10.            if(x==0){11.                r.set("mike","男");12.            }else{13.                r.set("lili","女");

8、14.            }15.            x=(x+1)%2

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。