"ThreadGroup"을 사용해선 안됩니다

 

ThreadGroup 클래스의 메소드를 사용할 이유가 없습니다. 어떤 코드들(allowThreadSuspension(), resume(), stop(), suspend())은 이미 deprecated 되었습니다. 그리고 어떤 코드(activeCount(), enumerate())는 구시대적인 코드이며, thread-safe 하지도, 안전하지도 않습니다. 이러한 이유로 ThreadGroup을 사용하는 것은 불안정하므로 피해야 합니다.

규칙을 준수한 해결책

ThreadFactory threadFactory = Executors.defaultThreadFactory();
ThreadPoolExecutor executorPool = new ThreadPoolExecutor(3, 10, 5, TimeUnit.SECONDS, new ArrayBlockingQueue<Runnable>(2), threadFactory);

for (int i = 0; i < 10; i++) {
  executorPool.execute(new JobThread("Job: " + i));
}

System.out.println(executorPool.getActiveCount()); // 규칙을 준수한 해결책
executorPool.shutdown();

같이보면 좋은 자료


If you like SONARKUBE, don’t forget to give me a star. :star2:

원문으로 바로가기

Star This Project