semaphore 썸네일형 리스트형 [Java] Semaphore(세마포어)를 이용한 ThreadExecutor DB에서 데이터를 읽어와서 네트워크를 통해 뭔가 작업을 한 후 다시 DB에 넣는 작업을 해야하는데 이 데이터의 건수가 많고 네트워크를 통한 작업에 시간이 좀 걸려서 이 부분을 스레드로 돌렸다. 기존에 알고 있는 Executor exec = Executors.newFixedThreadPool(10); 을 사용해서 실행을 했더니 DB에서 데이터 읽어오는 속도가 훨씬 빠른탓에 OOM 에러가 발생하기 시작... 처음에 도무지 왜 에러가 나는지 몰랐는데 확인해보니.. 내부에서 스레드들이 처리하지 못 한 JOB을 Queue에 저장해 두는데 이게 너무 쌓이다보니 문제가 되었던듯 하여... 자바병렬처리 프로그래밍 책을 다시 집어들었다. 미리 준비된 ExecutorService중 스레드가 추가 작업을 하지 못 할 때 w.. 더보기 이전 1 다음