ExecutorService (3) 썸네일형 리스트형 [Multi-Thread] execute() vs submit() execute()와 submit()은 모두 ExecutorService 인터페이스에서 제공되는 메서드로, 작업을 쓰레드 풀에 제출하여 실행하는 데 사용됩니다. 하지만 두 메서드 간에는 몇 가지 차이점이 있습니다. execute(Runnable command) 해당 메소드는 Executor 인터페이스 내부에 아래와 같이 정의되어 있습니다. void execute(Runnable command); execute 메서드의 특징은 아래와 같습니다. Runnable 타입의 작업만 처리 가능합니다. 반환 값이 없습니다. execute() 메서드는 작업이 완료되면 어떠한 결과값도 반환하지 않습니다. 따라서 Future 객체를 통해 작업의 상태를 추적하거나 결과를 얻을 수 없습니다. 작업 실패 시 예외 처리 만약 작업.. [Multi-Thread] Executor, ExecutorService와 ThreadPoolExecutor 자바에서는 다중 쓰레드 환경에서 작업을 비동기적으로 실행하기 위한 다양한 인터페이스와 클래스를 제공하고 있습니다. 대표적으로 Executor 인터페이스가 있고, Executor를 확장한 인터페이스인 ExecutorService 인터페이스, 그리고 ExecutorService 인터페이스를 구현한 클래스 중 하나인 ThreadPoolExecutor 가 있습니다. 이번 포스팅은 각각의 인터페이스 및 클래스에 대해서 작성해 보았습니다. Executor 인터페이스 Executor 인터페이스는 java.util.concurrent 패키지에서 제공하는 인터페이스로, 아래와 같이 단일 추상 메서드 'execute(Runnable command)'를 가지고 있습니다. 이 메서드는 Runnable 객체를 매개변수로 받아서.. [Multi-Thread] 쓰레드 결과 기다리기 (Future, submit(), get()) 최근에 회사에서 멀티 쓰레드로 병렬 처리를 하는 코드를 구현해야 했습니다. Java에서 제공하는 ExecutorService를 이용하여 Thread Pool (쓰레드 풀)을 생성하고, 각 쓰레드들에게 작업을 던진 후, 각 쓰레드의 작업 결과값을 받아서 후처리를 해주어야 하는 코드를 작성해야 했습니다. 그 과정에서 여러 가지 배운 점이 있어 정리하고자 포스팅을 작성하였습니다. 처음에는 아래와 같이 Runnable과 Executor 클래스의 execute()을 이용해 코드를 작성하였습니다. (참고로, ExecutorService는 Executor를 상속하기 때문에 타입이 ExecutorService여도 execute() 메서드 사용이 가능합니다.) public class ThreadTest { void ru.. 이전 1 다음