Thread pool 에서 결과(Future) 받기 1. 끝나기 전에 받기 - 하나씩 받기 future = executorService.submit(...job...); future = completionService.submit(...job...); 2. 끝날 때 까지 대기하여 받기 - 모두 끝난 후에 한꺼번에 다 받기 futureList = executorService.invokeAll(... job list ...); - 제일 일찍 끝난 결과 하나만 받기 future = executorService.invokeAny(... job list ...); - 먼저 끝나는 순서대로 하나씩 모두 받기 for (...) { future = completionService.take(); } 더보기 Thread 상태 new → Runable↔ waiting by lockObj.wait() or synchronizers (latch, barrier, semaphore ...)↔ timed waiting by lockObj.wait(time) or sleep()↔ blocked by acquiring lock or I/O request→ terminated 더보기 Thread-Safe 를 위한 Keywords Thread-Safe 를 위한 Keywords 1. volatile - 해당 공유되는 변수를 스레드별로 캐시하여 사용하지 말라는 뜻- 64 bit 연산도 32 bit 연산을 두 번에 나눠 하지 않고 단일 연산으로 처리- 해당 변수에대해 (read-연산-write) 를 묶어 thread-safe 하게 처리하는 것은 아님 2. final- 읽기 전용 변수- 유지보수/가독성에도 도움 3. java.util.concurrent.atomic- volatile 특성 + lock free thread-safe- lock를 사용하지 않고 CAS (Compare And Set/Swap)기법 사용하여 thread-safe 실현- thread-safe 메소드 제공increametAndGet, addAndGet, .. 더보기 이전 1 ··· 3 4 5 6 7 8 9 ··· 13 다음 목록 더보기