자바 병렬 프로 그래 밍 의 Exchange 방법 상세 설명
3014 단어 Java병렬 프로 그래 밍Exchanger
exchanger 는 스 레 드 간 데이터 교환 에 사용 되 는 도구 류 로 공공 점 을 제공 합 니 다.이 공공 점 에서 두 스 레 드 는 서로의 데 이 터 를 교환 할 수 있 습 니 다.
하나의 스 레 드 가 exchange 방법 을 호출 한 후에 대기 상태 에 들 어가 다른 스 레 드 가 exchange 방법 을 호출 할 때 까지 쌍방 이 데이터 교환 을 완성 한 후에 계속 실 행 됩 니 다.
exchanger 사용
방법 소개
exchange(V x):다른 스 레 드 가 exchange 방법 을 호출 하거나 현재 스 레 드 가 중 단 될 때 까지 현재 스 레 드 를 막 습 니 다.
x:교환 이 필요 한 대상.
exchange(V x,long timeout,TimeUnit unit):현재 스 레 드 를 막 고 다른 스 레 드 가 exchange 방법 을 호출 하거나 현재 스 레 드 가 중단 되 거나 시간 이 초 과 될 때 까지 기 다 립 니 다.
예 1:A 학우 와 B 학우 가 각자 소장 하고 있 는 블록 버스터 를 교환 하 다
public class Demo {
public static void main(String[] args) {
Exchanger<String> stringExchanger = new Exchanger<>();
Thread studentA = new Thread(() -> {
try {
String dataA = "A ";
String dataB = stringExchanger.exchange(dataA);
System.out.println("A " + dataB);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
Thread studentB = new Thread(() -> {
try {
String dataB = "B ";
String dataA = stringExchanger.exchange(dataB);
System.out.println("B " + dataA);
} catch (InterruptedException e) {
e.printStackTrace();
}
});
studentA.start();
studentB.start();
}
}
/*
* :
* B A
* A B
*/
예 2:A 학우 가 바람 을 맞 아 거래 에 실패했다.
public class Demo {
public static void main(String[] args) {
Exchanger<String> stringExchanger = new Exchanger<>();
Thread studentA = new Thread(() -> {
String dataB = null;
try {
String dataA = "A ";
// 5
dataB = stringExchanger.exchange(dataA, 5, TimeUnit.SECONDS);
} catch (InterruptedException e) {
e.printStackTrace();
} catch (TimeoutException ex){
System.out.println(" -TimeoutException");
}
System.out.println("A " + dataB);
});
studentA.start();
}
}
/*
* :
* -TimeoutException
* A null
*/
자바 병행 프로 그래 밍 의 exchanger 방법 에 대한 상세 한 설명 은 여기까지 입 니 다.더 많은 자바 병행 프로 그래 밍 exchanger 내용 은 우리 의 이전 글 을 검색 하거나 아래 의 관련 글 을 계속 조회 하 시기 바 랍 니 다.앞으로 많은 응원 바 랍 니 다!
이 내용에 흥미가 있습니까?
현재 기사가 여러분의 문제를 해결하지 못하는 경우 AI 엔진은 머신러닝 분석(스마트 모델이 방금 만들어져 부정확한 경우가 있을 수 있음)을 통해 가장 유사한 기사를 추천합니다:
JPA + QueryDSL 계층형 댓글, 대댓글 구현(2)이번엔 전편에 이어서 계층형 댓글, 대댓글을 다시 리팩토링해볼 예정이다. 이전 게시글에서는 계층형 댓글, 대댓글을 구현은 되었지만 N+1 문제가 있었다. 이번에는 그 N+1 문제를 해결해 볼 것이다. 위의 로직은 이...
텍스트를 자유롭게 공유하거나 복사할 수 있습니다.하지만 이 문서의 URL은 참조 URL로 남겨 두십시오.
CC BY-SA 2.5, CC BY-SA 3.0 및 CC BY-SA 4.0에 따라 라이센스가 부여됩니다.