Java 1.5 이전
달성 동시
- 자바 녹색 스레드
OS 커널 제한, 실 = 공정, 녹색 스레드 JVM이 예약에 의해 스레드 전에 자바 1.2은 멀티 스레드 환경을 네이티브 스레드 지원을 시뮬레이션 없습니다.
- 자바 기본 스레드
비교
원시 스레드 및 스레드 동기화 측면보다 스레드 활성화 녹색 스레드
는 I / O 성능 및 스레드 컨텍스트의 동작 양태는 로컬보다 낮게
프로그래밍 모델
- 실
- 실행 가능한
제한 사항 (향후 릴리스는 결함이 부분을 개선하기 위해 해결할 수 배울 비교)
- 스레드 관리에 대한 기본 지원의 부족 (스레드 풀의 부족)
- "잠금"API (만 동기화 키워드)의 부족
- 의 완료의 구현을위한 기본 지원의 부족
대체 방법 :
public static void main(String[] args){
CompletableRunnable runnable = new CompletableRunnable();
Thread thread = new Thread(runnable,"Sub");
thread.start();
thread.join(); //此处阻塞主线程等待Sub完成, 否则得到的结果不准确
System.out.printf("[Thread: %s] is running\n", Thread.currentThread.getName());
System.out.printf("Sub Thread is completed, result is %s\n", runnable.getCompleted());
}
private static class CompletableRunnable implements Runnable{
private volatile boolean completed = false;
@Override
public void run(){
System.out.printf("[Thread: %s] is running\n", Thread.currentThread.getName());
completed = true;
}
public boolean getCompleted(){
return completed;
}
}
- 결과를 얻기의 어려움
- 두 번 확인 잠금 불확실성 (싱글)
자바 5
동시성 프레임 워크
- JUC
프로그래밍 모델
- 집행자, Execurtors, ExecutorService를 等
- 실행 가능한, 호출 가능
- 미래
자바 7
병렬 프레임 워크
- 포크 / 가입
프로그래밍 모델
- ForkJoinPool
- ForkJoinTask
- RecursiveAction
미래 (자바 5 소개) 제한
- 손으로 할 수없는
- 차단 결과가 반환
- 체인 여러 미래에 없습니다
- 미래의 결과는 여러 병합 할 수 없습니다
- 부족 예외 처리
자바 (8)
비동기 프레임 평행
- 포크 / 가입
프로그래밍 모델
- CompletionStage
- CompletableFuture
다른 프레임 워크
- 봄과 구아바는 다른 사용
ListenableFuture