Advertisement
Guest User

Untitled

a guest
Jul 29th, 2015
229
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.77 KB | None | 0 0
  1. package org.refcard.blog.councurrency.delayqueue;
  2.  
  3. import java.util.concurrent.BlockingQueue;
  4. import java.util.concurrent.DelayQueue;
  5. import java.util.concurrent.Delayed;
  6. import java.util.concurrent.TimeUnit;
  7.  
  8. public class DelayQueueExample {
  9.  
  10. public static void main(String[] args) {
  11.  
  12. BlockingQueue<DelayedElement> blockingQueue = new DelayQueue<DelayedElement>();
  13.  
  14. try {
  15. blockingQueue.put(new DelayedElement(4000, "Message with delay 4s"));
  16. blockingQueue.put(new DelayedElement(2000, "Message with delay 2s"));
  17. blockingQueue.put(new DelayedElement(9000, "Message with delay 9s"));
  18. } catch (InterruptedException ie) {
  19. }
  20.  
  21. while (!blockingQueue.isEmpty()) {
  22. try {
  23. System.out.println(">>" + blockingQueue.take());
  24. } catch (InterruptedException ie) {
  25. }
  26.  
  27. }
  28.  
  29. }
  30. }
  31.  
  32. class DelayedElement implements Delayed {
  33.  
  34. private long duration = 0;
  35. private String message;
  36.  
  37. public DelayedElement(long duration, String name) {
  38. this.duration = System.currentTimeMillis() + duration;
  39. this.message = name;
  40. }
  41.  
  42. @Override
  43. public int compareTo(Delayed o) {
  44.  
  45. return (int) (this.duration - ((DelayedElement) o).getDuration());
  46. }
  47.  
  48. @Override
  49. /*
  50. * Expiration occurs when an element's getDelay(TimeUnit unit) method
  51. * returns a value less than or equal to zero.
  52. */
  53. public long getDelay(TimeUnit unit) {
  54. long diff = duration - System.currentTimeMillis();
  55. return unit.convert(diff, TimeUnit.MILLISECONDS);
  56. }
  57.  
  58. public long getDuration() {
  59. return duration;
  60. }
  61.  
  62. public void setDuration(long duration) {
  63. this.duration = duration;
  64. }
  65.  
  66. public String getMessage() {
  67. return message;
  68. }
  69.  
  70. public void setMessage(String message) {
  71. this.message = message;
  72. }
  73.  
  74. @Override
  75. public String toString() {
  76. return "DelayedElement [duration=" + duration + ", message=" + message
  77. + "]";
  78. }
  79.  
  80. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement