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();
같이보면 좋은 자료
- CERT, THI01-J. ThreadGroup 메소드를 사용하지 마세요.
If you like SONARKUBE, don’t forget to give me a star.