ExecutorService
ExecutorService
상태 : running, shutting down, terminated
> 쓰레드풀 생성
ExecutorService exe = Executors.newCachedThreadPool();
고정 크기의 쓰레드풀의 경우 Executors.newFixedThreadPool( int nThreads );
ThreadFactory 인터페이스를 사용해 특정 쓰레드를 풀 구성요소로 생성이 가능하다.
class MyThreadFactory implements ThreadFactory {
public Thread newThread( Runnable r ) {
return new MyThread(r);
}
};
> 작업 실행
exe.execute( Runnable );
해당 작업(Runnable)을 쓰레드풀의 큐에 넣고, 실행 시킨다.
Future<?> task = exe.submit( Runnalble );
해당 작업의 처리여부 확인을 위해서는 Future 객체를 사용하고,
submit 메쏘드로 작업을 큐에 넣는다.
> 종료
exe.shutdown();
쓰레드풀을 종료하지만 이미 존재하는 작업은 진행.
exe.shutdownNow();
모든 작업 중지
> 상태
shutdown() 이후 지정 시간동안 대기하며, 작업 종료시 true
awaitTermination( long, TimeUnit )
> Future<?>
Future<?> f = submit( Runnable ) 수행시 결과를 얻어온다.
f.isCancelled() : 작업의 취소여부
f.isDone() : 작업 성공 여부
f.cancel( boolean ) : 작업 취소
f.get() : 작업 결과 얻기 - 블럭킹