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ù)到來(lái)時(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)文章
nas實(shí)現(xiàn)java開(kāi)發(fā)的環(huán)境詳解
這篇文章主要為大家介紹了nas實(shí)現(xiàn)java開(kāi)發(fā)的環(huán)境詳解,有需要的朋友可以借鑒參考下,希望能夠有所幫助,祝大家多多進(jìn)步,早日升職加薪2023-11-11
Java?CopyOnWriteArrayList源碼超詳細(xì)分析
為了將讀取的性能發(fā)揮到極致,jdk中提供了CopyOnWriteArrayList類(lèi),下面這篇文章主要給大家介紹了關(guān)于java中CopyOnWriteArrayList源碼解析的相關(guān)資料,文中通過(guò)實(shí)例代碼介紹的非常詳細(xì),需要的朋友可以參考下2022-11-11
Java虛擬機(jī)內(nèi)存溢出與內(nèi)存泄漏
這篇文章主要介紹了Java虛擬機(jī)內(nèi)存溢出與內(nèi)存泄漏,文中通過(guò)示例代碼介紹的非常詳細(xì),對(duì)大家的學(xué)習(xí)或者工作具有一定的參考學(xué)習(xí)價(jià)值,需要的朋友可以參考下2020-04-04
Java Synchronized鎖升級(jí)原理及過(guò)程剖析
這篇文章主要為大家詳細(xì)介紹一下Java中Synchronized鎖升級(jí)原理及過(guò)程,文中的示例代碼講解詳細(xì),感興趣的小伙伴可以跟隨小編一起學(xué)習(xí)學(xué)習(xí)2022-08-08

