public static void main(String... args) throws InterruptedException { DelayQueue<Task> dq = new DelayQueue<>(); dq.offer(new Task(1)); dq.offer(new Task(2)); dq.offer(new Task(3));
//sleep some times so that some task will be ready for poll Thread.sleep(300); for (int i = 0; i < 3; i++) { long l = System.currentTimeMillis(); Task task = dq.poll(); System.out.println(task); System.out.println("blocked for millis: " + (System.currentTimeMillis() - l)); System.out.println("----"); }
}
private static class Task implements Delayed { private final long end; private final int expectedDelay; private int id;