Java多线程(7):线程间的通信

1.轮询方式

while(true){

    // 判断条件

}

2.wait/notify:






改变线程对象的状态:






notifyAll()唤醒所有线程


通知过早 会打乱程序正常的运行逻辑

wait等待的条件发生了变化 也容易造成程序逻辑的混乱









条件判断if/while



3.管道

用于在不同线程间直接传输数据 一个线程发送数据到输出管道 另一个线程从输入管道中读数据 通过使用管道

实现不同线程间的通信 而无须借助于类似临时文件之类的东西

1.PipedInputStream和PipedOutputStream

2.PipedReader和PipedWriter




字符流 类似

等待/通知交叉备份:



join方法的使用:

主线程创建并启动子线程 如果子线程需要进行耗时运算 主线程往往将早于子线程结束之前结束

这时 如果主线程想等待子线程执行完之后再结束 比如子线程处理一个数据 主线程要取得这个数据中的值 就要用到join()方法了

join方法的作用就是等待线程对象的销毁


在join过程中 如果当前线程对象被中断 则当前线程出现异常



单位是毫秒

join(long)的功能在内部是使用wait(long)方法来实现的 所以join(long)方法具有释放锁的特点



评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值