본문 바로가기

12장 스레드풀(3) 리턴값이 있는 작업 완료 통보 Callable task = new Callable() {@Overridepublic T call() throws Exception {//스레드가 처리할 작업 내용return T;}};Future future = executorService.submit(task)try {T result = future.get();} catch (InterruptedException e) {//작업 처리 도중 스레드가 interrupt될 경우 실행할 코드} catch(ExecutionException e) {//작업 처리 도중 예외가 발생된 경우 실행할 코드} 1) 리턴값이 있는 작업을 정의할 때는 Callable 객체를 사용한다. 에는 리턴값의 타입을 선언해 놓는다.2) Callable이 ..
12장 스레드풀(2) 블로킹 방식이란?무언가를 요청을 하고 나서 요청의 결과가 나올때까지 기다리는 방식을 이야기 한다. 블로킹 방식의 작업 완료 통보 받기리턴타입 메소드명(매개변수) 설명 Future submit(Runnable task) - Runnable 또는 Callable을 작업 큐에 저장 - 리턴된 Future를 통해 작업 처리 결과를 얻는다. Future submit(Runnable task, V result) Future submit(Callable task) Future-작업 결과가 아니라 지연완료(pending completion)객체-작업이 완료될 때까지 기다렸다가 최종 결과를 얻기 위해서 get()메소드를 사용한다.리턴타입 메소드명(매개변수) 설명 V get() 작업이 완료될 때까지 블로킹 되어있다가 처리..
12장 스레드풀(1) 스레드 폭증-병렬 작업 처리가 많아지면 스레드의 개수가 증가한다.-스레드 생성과 스케쥴링으로 인해 CPU가 바빠지고, 메모리 사용량이 늘어난다.-따라서 애플리케이션의 성능이 급격히 저하된다. 다양한 작업을 동시에 처리하면서도 많은 수의 작업에 따른 무분별한 스레드의 생성을 막고, 애플리케이션의 성능이 저하되지 않게 하기 위해서 스레드를 효율적으로 관리하는 스레드 풀이 등장하였다. 스레드 풀(Thread Pool)-스레드 풀은 스레드의 개수를 미리 정해놓고 그 한도 내에서 사용하는 것을 말한다.-작업 처리에 사용되는 스레드를 제한된 개수만큼 미리 생성 -작업 큐(Queue)에 들어오는 작업들을 하나씩 스레드가 맡아 처리한다.-작업 처리가 끝난 스레드는 작업 결과를 애플리케이션으로 전달한다.-스레드는 다시 ..