Java多線程編程之使用Exchanger數(shù)據(jù)交換實(shí)例
更新時(shí)間:2015年05月19日 10:07:35 投稿:junjie
這篇文章主要介紹了Java多線程編程之使用Exchanger數(shù)據(jù)交換實(shí)例,本文直接給出實(shí)例代碼,需要的朋友可以參考下
用于實(shí)現(xiàn)兩個(gè)人之間的數(shù)據(jù)交換,每個(gè)人在完成一定的事務(wù)后想與對(duì)方交換數(shù)據(jù),第一個(gè)先拿出數(shù)據(jù)的人將一直等待第二個(gè)人拿著數(shù)據(jù)到來時(shí),才能彼此交換數(shù)據(jù)。
復(fù)制代碼 代碼如下:
package com.ljq.test.thread;
import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
public class ExchangerTest {
public static void main(String[] args) {
ExecutorService service = Executors.newCachedThreadPool();
final Exchanger exchanger = new Exchanger();
service.execute(new Runnable(){
public void run() {
try {
String data1 = "張三";
System.out.println("線程" + Thread.currentThread().getName() + "正在把數(shù)據(jù)'" + data1 +"'換出去");
Thread.sleep((long)(Math.random()*10000));
String data2 = (String)exchanger.exchange(data1);
System.out.println("線程" + Thread.currentThread().getName() + "換回的數(shù)據(jù)為'" + data2+"'");
}catch(Exception e){
}
}
});
service.execute(new Runnable(){
public void run() {
try {
String data1 = "李四";
System.out.println("線程" + Thread.currentThread().getName() + "正在把數(shù)據(jù)'" + data1 +"'換出去");
Thread.sleep((long)(Math.random()*10000));
String data2 = (String)exchanger.exchange(data1);
System.out.println("線程" + Thread.currentThread().getName() + "換回的數(shù)據(jù)為'" + data2 + "'");
}catch(Exception e){
}
}
});
}
}
返回結(jié)果:
復(fù)制代碼 代碼如下:
線程pool-1-thread-1正在把數(shù)據(jù)'張三'換出去
線程pool-1-thread-2正在把數(shù)據(jù)'李四'換出去
線程pool-1-thread-1換回的數(shù)據(jù)為'李四'
線程pool-1-thread-2換回的數(shù)據(jù)為'張三'
相關(guān)文章
java實(shí)現(xiàn)簡(jiǎn)單日期計(jì)算功能
這篇文章主要為大家詳細(xì)介紹了java實(shí)現(xiàn)簡(jiǎn)單日期計(jì)算功能,具有一定的參考價(jià)值,感興趣的小伙伴們可以參考一下2018-11-11Java中的MapStruct知識(shí)點(diǎn)總結(jié)
這篇文章主要介紹了Java中的MapStruct知識(shí)點(diǎn)總結(jié),MapStruct是一個(gè)Java注解處理器,用于生成類型安全的映射代碼,它可以自動(dòng)處理源對(duì)象和目標(biāo)對(duì)象之間的映射,減少了手動(dòng)編寫重復(fù)的映射代碼的工作量,需要的朋友可以參考下2023-10-10Java8如何利用Lambda快速生成map、多層嵌套map
這篇文章主要介紹了Java8如何利用Lambda快速生成map、多層嵌套map問題,具有很好的參考價(jià)值,希望對(duì)大家有所幫助。如有錯(cuò)誤或未考慮完全的地方,望不吝賜教2022-09-09