2009-08-17 3 views

답변

13

BoundedFIFOBuffer 아파치 코 몬즈 컬렉션 (당신이 말하는 것으로 가정합니다)은 더 이상 사용되지 않으며 패키지를 옮겼습니다. org.apache.commons.collections의 원래는 사용되지 않으며, 그리고 BoundedFifoBuffer 포함 아파치 commons-collections에서 일부 제한된 컬렉션이 있습니다 대신 org.apache.commons.collections.buffer

+0

감사합니다. 어쨌든 나는 비추천 페이지에 착륙했습니다. – Justin

10

왜 그냥 LinkedBlockingQueue를 사용하고 액세스 할 비 차단 방법을 offer (또는 add) 및 poll를 사용하지도? 고정 된 용량으로 만들 수 있습니다 (즉, 제한적으로 만들 수 있음).

+0

또 다른 좋은 옵션입니다. 감사. – Justin

+0

아마도 걱정할 가치는 없지만 LinkedBlockingQueue는 여전히 잠금을 유지합니다. 미래 버전의 핫스팟은이를 최적화 할 수 있습니다. 그러나 나중에 프로파일 링 할 때주의해야 할 사항. –

2

나는 최근에 Google Collections을 사용 해왔다. 나는 당신이 Java Generics 솔루션을 꽤 쉽게 가질 수 있다고 생각한다. ForwardingList이라는 클래스가 있습니다. 저는이 아이디어를 꽤 쉽게 구현할 수 있다고 생각합니다. BoundedFifoBuffer (비 제너릭) 또는 ArrayBlockingQueue를 사용하는 것만 큼 쉽지는 않습니다.

final ArrayList<MyObject> realList = Lists.newArrayList(); 
final List<MyObject> list = new ForwardingList<MyObject>() { 
    protected List<MyObject> delegate() { 
     return realList; 
    } 

    public boolean add(MyObject obj) { 
     if(delegate().size() > 100) return false; 
     return delegate().add(obj); 
    } 
}; 
관련 문제