ExecutorService

2022. 12. 18. 17:55카테고리 없음

Thread를 활용하여 다수의 작업(Task)들을 비동기로 수행한다는 것은 간단하지 않다. Thread의 라이프사이클(생성과 제거 등)이나 발생할 수 있는 여러가지 low level의 고려사항들이 존재하는데 이를 개발자가 신경쓰지 않도록 편리하게 추상화한 것이 ExecutorService이다.

ExecutorService에 Task(작업)를 지정해주면 가진 ThreadPool을 이용하여 Task를 실행한다. Task는 큐(Queue)로 관리되기 때문에 ThreadPool의 Thread 갯수보다 실행할 Task가 많은경우 미실행된 Task는 큐에 저장되어 실행을 마친 Thread가 생길 때까지 기다린다.

 

 

우리가 많이 사용하는가?
우리가 쓰레드를 직접 만들어서 쓰는 일은 거의없다.
쓰레들 풀을 조건에 따라서 관리해달라 조건을 만들고 그에 맞는 쓰레드 풀을 만들어 놓기에
그 것을 관리하는 구현체를 가져와서 쓴다.
쓰레드도 만드는데 돈이 든다 그래서 재사용한다.

결론:
병렬 작업시여러 개의 작업을 효율적으로 처리하기 위해 제공되는 java라이브러리이다.
각기 다른 Thread를 생성해서 작업을 처리하고, 처리가 완료되면 해당 Thread를 제거하는 작업을 손수 진행해야하는 것을 ExecutorService 클래스를 이용하면 쉽게 처리가능하다. 쓰레드 생성주기를 사용자가 관리할 필요가 없다.
 Queue로 관리된다. ThreadPool에 등록해서 병렬로 처리
 Thread수보다 Task가 많으면, 미실행된 Task는 Queue에 저장되고, 실행을 마친 Thread로 할당되어 순차적으로 수행된다

참고:https://yangbox.tistory.com/28