JDK1.5 Exchange 두 스레드 교환 데이터
2469 단어 exchange
import java.util.concurrent.Exchanger;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
/**
* Exchange 2
*/
public class ExchangeTest {
/**
* @param args
*/
public static void main(String[] args) {
// TODO Auto-generated method stub
ExecutorService service=Executors.newCachedThreadPool();
final Exchanger exchanger=new Exchanger();
service.execute(new Runnable(){
@Override
public void run() {
try {
String data1="zxx";
System.out.println(" "+Thread.currentThread().getName()+" "+data1+" ");
Thread.sleep((long)Math.random()*10000);
String data2=(String)exchanger.exchange(data1);
System.out.println(" "+Thread.currentThread().getName()+" "+data2);
} catch (Exception e) {
// TODO: handle exception
}
}
});
service.execute(new Runnable(){
@Override
public void run() {
try {
String data1="lhm";
System.out.println(" "+Thread.currentThread().getName()+" "+data1+" ");
Thread.sleep((long)Math.random()*10000);
String data2=(String)exchanger.exchange(data1);
System.out.println(" "+Thread.currentThread().getName()+" "+data2);
} catch (Exception e) {
// TODO: handle exception
}
}
});
service.execute(new Runnable(){
@Override
public void run() {
try {
String data1="happy";
System.out.println(" "+Thread.currentThread().getName()+" "+data1+" ");
Thread.sleep((long)Math.random()*10000);
String data2=(String)exchanger.exchange(data1);
System.out.println(" "+Thread.currentThread().getName()+" "+data2);
} catch (Exception e) {
// TODO: handle exception
}
}
});
}
}
결과:
스레드pool-1-thread-1 데이터 zxx를 바꾸고 있습니다.
스레드pool-1-thread-2 데이터를 lhm로 바꾸고 있습니다.
스레드 풀-1-thread-3 데이터를 happy로 바꾸고 있습니다.
스레드pool-1-thread-3 교환된 데이터는 zxx
스레드pool-1-thread-1 변환된 데이터는happy
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
Exchange 2013 사서함 사용자 최대 수신자 설정사용자 수준에서 메일당 최대 수신자 수를 제한하여 Exchange 2013 EMS 열기 조회 현재 회사의 모든 사용자의 최대 수신자 수가 얼마인지 조회하고 하향 순서에 따라 배열하다 질의를 max_에 저장하는 경우r...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.