-
首先我们定义了一个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)