1. CompletableFuture
- Futer와 completionStage를 구현한 클래스
2. Future
- 비동기적 연산의 결과 표현 클래스
- Multi Thread 환경에서 처리된 데이터를 다른 Thread에 전달 가능
- 내부적으로 Thread-Safe 하도록 구현되었기에 synchronized block을 사용하지 않아도 됨.
3. executorsService
- ExecutorService는 Executor 확장
- 하나 이상의 비동기 작업의 진행 상황을 추적하기 위해 Executor 생성할 수 있는 종료 및 메서드를 관리하는 메서드 제공
- Future ExecutorService는 종료될 수 있으며 이로 인해 새 작업이 거부되며 ExecutorService를 종료하기 위해 두 가지 다른 방법이 제공
- shutdown() 메서드는 이전에 제출된 작업이 종료되기 전에 실행되도록 허용
- shutdownNow() 메서드는 대기 중인 작업이 시작되는 것을 방지하고 현재 실행 중인 작업을 중지하려고 시도
- 종료 시 실행자는 활성 실행 중인 작업, 실행 대기 중인 작업 및 제출할 수 있는 새 작업이 없습니다.
- 사용하지 않는 ExecutorService는 리소스를 회수할 수 있도록 종료되어야 합니다.
4. newCachedTreadPool()
- 필요시 새 Thread 생성하나 이전 생성 Thread가 사용 가능하다면 재사용 Thread Pool 생성하여 많은 단기 비동기 작업을 실행하는 프로그램의 성능 향상
- 60초 동안 사용되지 않은 Thread는 종료되고 캐시에서 제거하여 오랫동안 유휴 상태를 유지하는 풀은 리소스를 소비하지 않습니다.
- 속성은 비슷하지만 세부 정보가 다른 풀(예: 시간제한 매개변수)은 ThreadPoolExecutor 생성자를 사용하여 생성할 수 있습니다.
5. newFixedThreadPool(int)
- 인자 개수만큼 고정된 Thread Pool 생성
6. newCachedThreadPool()
- 필요한 만큼 Thread Pool 생성
- 이미 생성된 Thread를 재활용할 수 있기 때문에 성능상의 이점
7. newScheduledThreadPool(int)
- 일정 시간 뒤에 실행되는 작업이나, 주기적으로 수행되는 작업
8. newSingleThreadExecutor()
- Thread 1개인 ExecutorService 리턴하여 Single Thread에서 동작해야 하는 작업을 처리할 때 사용
9. newSingleThreadScheduledExecutor()
- 지정된 지연 후에 실행하거나 주기적으로 실행하도록 명령을 예약할 수 있는 Single Thread 실행기 생성
10. scheduleAtFixedRate(Runnable command, long initialDelay, long period, TimeUnit unit)
- 지정된 지연 후 먼저 활성화되고 이후 지정된 시간 동안 활성화되는 주기적 작업을 만들고 실행
- initialDelay , initialDelay+period , initialDelay + 2 * period 순으로 실행 시작
public void threadStart() {
System.out.println("[threadStart()]");
ScheduledExecutorService executorService= Executors.newSingleThreadScheduledExecutor();
executorService.scheduleAtFixedRate((() -> {
System.out.println("[threadStart()] : Thread Scheduling Start");
getTaskFind();
System.out.println("[threadStart()] : Thread Scheduling End");
}), 0, 5,TimeUnit.SECONDS);
//0초 부터 5초 마다 실행
}
alwayslee_12 / 2021년 2월 3일 / https://velog.io/@alwayslee_12/CompletableFuture
codechacha.com / December 05, 2020 / https://codechacha.com/ko/java-future/
Java - Future 사용 방법
Future는 비동기적인 연산의 결과를 표현하는 클래스입니다. 즉, 멀티쓰레드 환경에서 처리된 어떤 데이터를 다른 쓰레드에게 전달하는 역할을 합니다. Future 내부적으로 Thread-Safe 하도록 구현되
codechacha.com
CompletableFuture
자바에서 비동기 프로그래밍을 가능하게 하는 인터페이스Concurrent 소프트웨어동시에 여러 작업을 할 수 있는 소프트웨어예) 웹 브라우저로 유튜브를 보면서 키보드로 문서에 타이핑을 할 수 있
velog.io
'Java' 카테고리의 다른 글
로그 쿼리 확인(log4j/logback) (0) | 2022.12.27 |
---|---|
Runnable JAR Export + Window Scheduler (0) | 2022.05.31 |
String, StringBuffer, StringBuilder (0) | 2022.05.26 |