DelayQueue 초학

2004 단어
Delay Queue를 처음 배웠는데 Delay Queue는 매우 유용한 시간 지연 대기열입니다.DelayQueue는 Delayed를 실현하는 대상 파라미터가 있어야만 정확하게 실행할 수 있습니다.delayQueue 정보offer(new DelayTest(20),20,TimeUnit.MILLISECONDS);방법은 원본 코드에서 직접 호출하는 것이 오프라인 (E) 이기 때문에 오프라인 (E) 방법을 추천합니다.소스: public boolean offer (E, long timeout, Time Unit unit) {return offer (e);
import java.util.ArrayList; import java.util.List; import java.util.concurrent.DelayQueue; import java.util.concurrent.Delayed; import java.util.concurrent.TimeUnit;
public class DelayQueueTest {
public static void main(String[] args) {
    DelayQueue delayQueue = new DelayQueue();
    delayQueue.offer(new DelayTest(10));
    delayQueue.offer(new DelayTest(5));
    delayQueue.offer(new DelayTest(1));
    delayQueue.offer(new DelayTest(15));
    delayQueue.offer(new DelayTest(19));

//단일 사이클이//for(int i=0; i<20; i++) {//Delay Test poll = delay Queue.poll(),//System.out.println("queue size:"+ delay Queue.size()+, poll:"+ poll),//try {//Thread.sleep(1000),//} catch(Interrupted Exception)
    // 
    List list = new ArrayList();
    while (true) {
        int i1 = delayQueue.drainTo(list);
        System.out.println("queue size:" + delayQueue.size() +",poll size:"+list.size()+ ",poll:" + list);
        try {
            Thread.sleep(1000);
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }

}

}
class DelayTest implements Delayed {
private long time;

public DelayTest(long time) {
    this.time = System.currentTimeMillis() + time * 1000;
}

// ,  , , null, <=0, 
public long getDelay(TimeUnit unit) {
    return time - System.currentTimeMillis();
}

// , <=0, ,>0 , 
public int compareTo(Delayed o) {
    return (int) (getDelay(TimeUnit.MILLISECONDS) - o.getDelay(TimeUnit.MILLISECONDS));
}

}

좋은 웹페이지 즐겨찾기