并发编程工具(三)Exchanger 交换器

2021-04-18  本文已影响0人  圆企鹅i
image.png
先回忆一下mq的模型

消息队列永远滴神!
(i) producer生产者把任务丢到 mq
(ii) exchange对任务进行分发
(iii)consumer消费者从队列中领任务

exchange是可以根据不同的模式(mq中)

分发不同的任务到不同队列
包括群发,根据名字发,根据名字*(模糊匹配)发

中间件的核心思路也体现在发收解耦上面

Exchanger 我觉得用这个思路来理解肯定会舒服很多(可能只是我觉得)


爱称:匿名聊天盲盒
说明:又一大神器,可以把毫无联系的两个东西,在java的世界里让他们沟通起来
基本上有这个,就能java代码手撸一个mq出来玩了
简介:简单好用,易上手,就是没啥地方能用到,发布订阅用成熟的中间件redis,mq不香吗!!!
而且又是容易堵塞线程的一大利器(贬义)

image.png
 Exchanger<String> stringExchanger = new Exchanger<>();
            threadPool.execute(() -> {
                try {
                    //1.发送一条消息到神秘空间
                    //2.我苦苦的堵塞 等到有结果的那一天
                    //3.1 到时间了 我收回消息 溜了
                    //3.2 一位神秘人拿走了那条消息 并拿到了他给我的消息
                    String message = stringExchanger.exchange("message", 100L, TimeUnit.SECONDS);
                } catch (Exception e) {
                    //exception
                } finally {
                    //do sth
                }
            });
            //神秘人
            new Thread(() -> {
                try {
                    // 拿走了你的消息 并对你吐了口水
                    String message = stringExchanger.exchange("口水", 100L, TimeUnit.SECONDS);
                } catch (Exception e) {
                    //exception
                } finally {
                    //do sth
                }
            }
            );

感谢:《java并发变成详解:深入理解并发核心库》汪文军

上一篇 下一篇

猜你喜欢

热点阅读