2011-08-08 5 views
5

두 개의 프로세스 (생산자/소비자)가 있습니다. 첫 번째 요소는 Collection에 요소를 넣고 두 번째 요소는 요소를 읽습니다.Java의 여러 제약 조건 (시간 및 크기)을 가진 컬렉션

  • 적어도 컬렉션의 마지막 요소를받은 T 초 전에 또는
  • 에서 N 요소가 있습니다

    나는 두 번째 과정은 모든 개별 요소를 읽을 수 있지만 때까지 기다려야하지 싶습니다.

Java 5 이상에서 이러한 종류의 동작을 허용하는 컬렉션이 있습니까? Queue 구현을 생각하고 있었지만 DelayQueue 만 찾았습니다. 정확히 내가 필요한 것은 아닙니다.

감사합니다.

+0

내가 자바 컬렉션 이런 건 잘 모르는 것 같아요는, 구아바도 그것을 가지고하지 않는 것 같습니다. 아마, LinkedList를 말하고, 문제가 있다면 여기에 물어 보자. –

답변

2

관찰 가능 컬렉션을 구현합니다. 두 번째 프로세스는 N 요소가 컬렉션에 있고 (size 속성을 기반으로하는 이벤트) 특정 시간 동안 요소가 추가되지 않았 음을 알리는 이벤트를 수신합니다 (add 작업마다 재설정되는 타이머 필요)

(다만 크기 요구 사항을 제도)이 같은

뭔가 :

public ObservableCollection implements Collection { 

    private int sizetrigger; 
    private Collection collection; 
    private Collection<Listener> listeners = new ArrayList<Listener>(); 
    public ObservableCollection(Collection collection) { 
    this.collection = collection; 
    } 

    @Override 
    boolean add(Object element) { 
    collection.add(element); 
    if (size >= sizeTrigger) { 
     fireSizeEvent(); 
    } 
    } 

    private fireSizeEvent() { 
     for(Listener listener:listeners) { 
     listener.thresholdReached(this); 
     } 
    } 

    // addListener, removeListener and implementations of interface methods 
} 
+0

고맙습니다. 나는 또한 좋은 출발점이 될 수있는 http://commons.apache.org/dormant/events/apidocs/org/apache/commons/events/observable/ObservableCollection.html을 발견했다. –