[java] 스레드 풀의 단점은?
  1. 스레드 오버헤드: 스레드 풀은 스레드를 미리 생성하고 관리하기 때문에 일정한 오버헤드가 발생합니다. 스레드 생성 및 삭제 작업은 비용이 많이 들기 때문에, 작업 처리량이 많거나 작업의 소요 시간이 짧은 경우에는 스레드 풀의 성능이 저하될 수 있습니다.

  2. 데드락 가능성: 여러 스레드가 동시에 접근하는 공유 자원에 접근 제어를 위한 동기화 작업이 필요한 경우, 스레드 풀을 사용할 때 데드락이 발생할 수 있습니다. 이는 자원을 동기화하기 위해 스레드 간에 상호 차단이 발생할 때 발생하는 문제입니다.

  3. 스레드 처리 순서 예측 어려움: 스레드 풀은 작업을 스레드에 할당할 때, 스레드의 처리 속도나 우선순위 등을 고려하여 할당합니다. 따라서 스레드 처리 순서를 정확하게 예측하기 어렵습니다. 이는 특정 상황에서 예기치 않은 동작을 유발할 수 있습니다.

  4. 리소스 공유 문제: 동시에 실행되는 스레드들은 자원을 공유하게 됩니다. 따라서 적절한 동기화 작업 없이 스레드 풀을 사용할 경우, 여러 스레드 간의 자원 충돌이 발생하여 응답 시간이 길어지거나 예기치 않은 동작이 발생할 수 있습니다.

이러한 단점을 고려하여 스레드 풀의 사용 시 적절한 설정과 동기화 작업을 통해 안정적인 실행을 보장해야 합니다.