BaseTaskBeanDelayed.java 1.4 KB

12345678910111213141516171819202122232425262728293031323334353637383940414243444546474849505152535455565758596061626364656667686970717273747576777879808182
  1. package com.cyksj.common.task;
  2. import java.util.concurrent.Delayed;
  3. import java.util.concurrent.TimeUnit;
  4. /**
  5. * @author chan
  6. * @className BaseTaskBeanDelayed
  7. * @description 延时队列
  8. * @date 2020-05-21 16:35
  9. */
  10. public abstract class BaseTaskBeanDelayed implements Delayed, Runnable {
  11. /**
  12. * 任务Id
  13. **/
  14. private String taskId;
  15. /**
  16. * 任务名称
  17. **/
  18. private String taskName;
  19. /**
  20. * 延迟时间
  21. **/
  22. private long expire;
  23. /**
  24. * 任务
  25. **/
  26. private Runnable task;
  27. /**
  28. * 优先队列里面优先级规则 TimeUnit .MILLISECONDS 获取单位 为毫秒的时间戳
  29. **/
  30. @Override
  31. public int compareTo(Delayed o) {
  32. return (int) (this.getDelay(TimeUnit.MILLISECONDS) - o.getDelay(TimeUnit.MILLISECONDS));
  33. }
  34. /**
  35. * 剩余时间=到期时间-当前时间 convert: 将给定单元的时间段转换到此单元。
  36. **/
  37. @Override
  38. public long getDelay(TimeUnit unit) {
  39. return unit.convert(this.expire - System.currentTimeMillis(), TimeUnit.MILLISECONDS);
  40. }
  41. public String getTaskId() {
  42. return taskId;
  43. }
  44. public void setTaskId(String taskId) {
  45. this.taskId = taskId;
  46. }
  47. public String getTaskName() {
  48. return taskName;
  49. }
  50. public void setTaskName(String taskName) {
  51. this.taskName = taskName;
  52. }
  53. public Runnable getTask() {
  54. return task;
  55. }
  56. public void setTask(Runnable task) {
  57. this.task = task;
  58. }
  59. public long getExpire() {
  60. return expire;
  61. }
  62. public void setExpire(long expire) {
  63. this.expire = expire;
  64. }
  65. }