728x90
반응형
CompletableFuture로 간단하게 해결
*java 8버전부터 가능
▷ Example
public void asyncExample() {
/* Example job_01 */
CompletableFuture job_01 = CompletableFuture.runAsync(() -> {
try {
Thread.sleep(4000);
System.out.println(">> [job_01] 4초 대기");
} catch (Exception e) {
e.printStackTrace();
}
});
/* Example job_02 */
CompletableFuture job_02 = CompletableFuture.runAsync(() -> {
try {
Thread.sleep(1000);
System.out.println(">> [job_02] 1초 대기");
} catch (Exception e) {
e.printStackTrace();
}
});
/* Example job_03 */
CompletableFuture job_03 = CompletableFuture.runAsync(() -> {
try {
Thread.sleep(1500);
System.out.println(">> [job_03] 1.5초 대기");
} catch (Exception e) {
e.printStackTrace();
}
});
try {
long beforeTime = System.currentTimeMillis(); // 시작 시간
// 가장 처음에 실행
System.out.println("=====================비동기 테스트 시작=====================");
// 3개의 job을 동시에 수행을 하고 모두 완료가 될때 까지 대기(파라미터 순서와 관계 없음)
CompletableFuture.allOf(job_02, job_01, job_03).get();
long afterTime = System.currentTimeMillis(); // 종료 시간
/* 두 시간에 차 계산*/
long secDiffTime = (afterTime - beforeTime)/1000;
System.out.println();
System.out.println(">> [실행시간] : "+secDiffTime +"초");
// 가장 마지막에 실행
System.out.println("=====================비동기 테스트 종료=====================");
} catch (Exception e) {
e.printStackTrace();
}
}
/*
결과 :
=====================비동기 테스트 시작=====================
>> [job_02] 1초 대기
>> [job_03] 1.5초 대기
>> [job_01] 4초 대기
>> [실행시간] : 4초
=====================비동기 테스트 종료=====================
*/
728x90
728x90
'▶ Back-End > Java' 카테고리의 다른 글
Java 환경변수 설정 (0) | 2022.05.10 |
---|---|
Java 11 버전 설치 방법 (0) | 2022.05.10 |
Object List 정렬(Comparator.comparing()) (0) | 2021.06.02 |
@EventListener Example (0) | 2021.05.18 |
파일 생성하기 (0) | 2021.05.13 |
댓글