Java 다중 루틴 프로그래밍 사용 Exchanger 데이터 교환 실례

두 사람 간의 데이터 교환을 실현하는 데 사용된다. 모든 사람이 일정한 업무를 완성한 후에 상대방과 데이터를 교환하고 싶다. 첫 번째 데이터를 먼저 꺼낸 사람은 두 번째 사람이 데이터를 가지고 올 때까지 기다려야 서로 데이터를 교환할 수 있다.

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() + " '" + data1 +"' ");
                    Thread.sleep((long)(Math.random()*10000));
                    String data2 = (String)exchanger.exchange(data1);
                    System.out.println(" " + Thread.currentThread().getName() + " '" + data2+"'");
                }catch(Exception e){
                    
                }
            } 
        });
        service.execute(new Runnable(){
            public void run() {
                try {             
                    String data1 = " ";
                    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){
                    
                }             
            } 
        });   
    }
}
반환 결과:

pool-1-thread-1 ' '
pool-1-thread-2 ' '
pool-1-thread-1 ' '
pool-1-thread-2 ' '

좋은 웹페이지 즐겨찾기