多线程并发编程笔记05(小滴课堂)-----线程间的通信

这里我们是使用一个线程的状态改变依赖另一个线程的这种方式去做的。

但是这种空循环的方式肯定是不好的。

 

 

 我们可以使用wait和notify的方法去做。

如果我们创建了多个线程,我们发现我们的程序一直没有终止,还是在运行状态。

 这时我们去调用我们的jconsole去查看一下线程的状态:

我们发现它是在waiting等待状态的。

 这是因为我们的wait是随机唤醒一个线程。

如果想都唤醒我们可以把方法换成notifyall:

 

 等待线程通知经典模型之生产者,消费者

 中间商:

生产者:

消费者:

启动类:

这样我们就简单的使用线程完成了这个例子。

使用管道流进行通信

我们先写一个读操作:

然后我们去写我们的主方法启动类:

因为我们知道我们的主方法也是一个线程,这样我们就完成了线程之间的通信。

 Thread.join通信

 

这明显不符合我们的预期。

 我们只需要加上join:

 

这样就符合我们的要求了。

 

 ThreadLocal的使用:

 

 Condition的使用:

这块我们更改之前的线程通信做的消费者,生产者中的中间商代码:

 

 

 

这样我们可以根据不同条件,指定线程去唤醒或等待。

猜你喜欢

转载自blog.csdn.net/weixin_52618349/article/details/129977236
今日推荐