java并发编程JUC第十一篇:如何在线程之间进行对等数据交换

  • 首先我们定义了一个Exchanger,用于数据交换

  • 然后定义了两个线程对象bookExchanger1和bookExchanger2,两个线程都持有Exchanger交换器对象用于数据交换

  • 两个线程中的每个线程都有自己的数据,比如下面代码中的String[] 书籍数组。


public static void main(String[] args) {

  //数据交换器-数据为book

  Exchanger<String> exchanger = new Exchanger<>();

  //换书线程1

  BookExchanger bookExchanger1

          = new BookExchanger(exchanger, new String[]{"Java从入门到放弃","Java编程思想"});

  //换书线程2

  BookExchanger bookExchanger2

          = new BookExchanger(exchanger, new String[]{"C语言程序设计","实战Python数据分析"});

  

  new Thread(bookExchanger1).start();

  new Thread(bookExchanger2).start();

}



BookExchanger 继承自Runnable代表参与换书的换书读者,他持有Exchanger数据交换器用于交换图书。


public class BookExchanger implements Runnable{



    Exchanger<String> exchanger = null;  //数据交换器

    String[]  books    = null;   //图书数组



    public BookExchanger(Exchanger<String> exchanger, String[] books) {

        this.exchanger = exchanger;

        this.books = books;

    }



    @Override

    public void run() {

        try {

            for(String bookName : books) {

                //交换数据,bookName为我的书,exBook为我换回来的书

                String exBook = this.exchanger.exchange(bookName);

                System.out.println(

                        Thread.currentThread().getName() +

                                " 用《 " + bookName + "》 换 《 " + exBook + "》"

                );



# 最后总结

搞定算法,面试字节再不怕,有需要文章中分享的这些**二叉树、链表、字符串、栈和队列等等各大面试高频知识点及解析**

最后再分享一份**终极手撕架构的大礼包(学习笔记):分布式+微服务+开源框架+性能优化**

![image](https

[video(video-YwqE11Nj-1716307426124)(type-bilibili)(url-https://player.bilibili.com/player.html?aid=331008350)(image-https://img-blog.csdnimg.cn/img_convert/ca0f2c78f09e4f1f6b9ab242e5137cec.jpeg)(title-需要文中资料的朋友,可以加我\/信获取:vip1024b  备注Java)]

://upload-images.jianshu.io/upload_images/24616006-3d51bb675be1f6f2?imageMogr2/auto-orient/strip%7CimageView2/2/w/1240)



  • 1
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值