블로킹 큐는 put과 take라는 핵심 메소드를 갖고 있고, 더불어 offer와 poll이라는 메소드도 갖고 있다.
만약 큐가 가득차 있다면 put메소드는 값을 추가할 공간이 생길 때까지 대기한다.
만약 큐가 비어있다면 take메소드는 값이 들어올 떄까지 대기한다.
블로킹 큐는 producer -consumer 패턴을 구현하기에 좋다
큐와 스레드 풀을 사용하는 경우가 바로 producer consumer 패턴을 사용하기 좋은 예이다.
인스턴스 한정
객체를 적절하게 캡슐화하는 것으로도 스레드 안정성을 확보할 수 있다. 이런 경우를 '한정'이라고 단순하게 부른다.
데이터를 객체 내부에 캡슐화해 숨겨두면 숨겨진 내용은 해당 객체의 ㅁ메소드에서만 사용할 수 있기 때문에 숨겨진 데이터를 사용하고자 할때는 항상 지정된 형태의 락이 적용되는지 쉽게 알 수 있다.
만약 큐가 가득차 있다면 put메소드는 값을 추가할 공간이 생길 때까지 대기한다.
만약 큐가 비어있다면 take메소드는 값이 들어올 떄까지 대기한다.
블로킹 큐는 producer -consumer 패턴을 구현하기에 좋다
큐와 스레드 풀을 사용하는 경우가 바로 producer consumer 패턴을 사용하기 좋은 예이다.
인스턴스 한정
객체를 적절하게 캡슐화하는 것으로도 스레드 안정성을 확보할 수 있다. 이런 경우를 '한정'이라고 단순하게 부른다.
데이터를 객체 내부에 캡슐화해 숨겨두면 숨겨진 내용은 해당 객체의 ㅁ메소드에서만 사용할 수 있기 때문에 숨겨진 데이터를 사용하고자 할때는 항상 지정된 형태의 락이 적용되는지 쉽게 알 수 있다.
'JAVA이야기' 카테고리의 다른 글
FutureTask<V> (0) | 2011.11.08 |
---|---|
deque(덱), 작업 가로채기 (0) | 2011.11.08 |
동기화 Collection클래스 (0) | 2011.11.07 |
Java Pattern Group 사용하기 (0) | 2011.11.05 |
java thread 내생각 (0) | 2011.11.03 |