美文网首页
并发编程工具(三)Exchanger 交换器

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

作者: 圆企鹅i | 来源:发表于2021-04-18 16:46 被阅读0次
    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并发变成详解:深入理解并发核心库》汪文军

    相关文章

      网友评论

          本文标题:并发编程工具(三)Exchanger 交换器

          本文链接:https://www.haomeiwen.com/subject/umuplltx.html