250x250
반응형
arkhyeon
arkhyeon
arkhyeon
전체 방문자
오늘
어제
  • 분류 전체보기 (88)
    • Spring (5)
    • Java (4)
    • React (25)
      • TypeScript (6)
      • JavaScript (1)
      • Jest (9)
    • NEXT (8)
    • SQL (1)
    • React native (1)
    • CSS (3)
    • Web (1)
    • Git (3)
    • ETC (6)
    • 빅데이터DB (8)
    • Docker (4)
    • Tool (1)

블로그 메뉴

  • 홈
  • 태그
  • 방명록

공지사항

인기 글

태그

  • kudu
  • react19
  • react websocket
  • websocket
  • websocket server
  • node WebSocket
  • react spring websocket
  • jest
  • react jest
  • javasciprt websocket
  • javascript wss
  • docker tomcat
  • WSS
  • HIVE
  • usetransition
  • react loading
  • react
  • Spring WebSocket
  • react typescript
  • react usetransition

최근 댓글

최근 글

티스토리

hELLO · Designed By 정상우.
arkhyeon

arkhyeon

Java

Java Thread (예제 newSingleThreadScheduledExecutor)

2022. 6. 15. 15:19
728x90
반응형

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

 

728x90
반응형

'Java' 카테고리의 다른 글

로그 쿼리 확인(log4j/logback)  (0) 2022.12.27
Runnable JAR Export + Window Scheduler  (0) 2022.05.31
String, StringBuffer, StringBuilder  (0) 2022.05.26
    'Java' 카테고리의 다른 글
    • 로그 쿼리 확인(log4j/logback)
    • Runnable JAR Export + Window Scheduler
    • String, StringBuffer, StringBuilder
    arkhyeon
    arkhyeon

    티스토리툴바