Advertisement
Guest User

Untitled

a guest
Jul 23rd, 2019
78
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 1.33 KB | None | 0 0
  1. package test;
  2.  
  3. import java.util.concurrent.Callable;
  4. import java.util.concurrent.Future;
  5. import java.util.concurrent.FutureTask;
  6. import java.util.concurrent.PriorityBlockingQueue;
  7. import java.util.concurrent.RunnableFuture;
  8. import java.util.concurrent.ThreadPoolExecutor;
  9. import java.util.concurrent.TimeUnit;
  10.  
  11. public class PriorityThreadPool extends ThreadPoolExecutor{
  12.  
  13.  
  14.  
  15. private class Helper<V> extends FutureTask<V> implements Runnable, Comparable<Helper<V>>{
  16. int priority;
  17.  
  18. public Helper(Callable<V> c,int priority) {
  19. super(c);
  20. this.priority=priority;
  21. }
  22. public Helper(Runnable run,V result, int priority) {
  23. super(run,result);
  24. this.priority=priority;
  25. }
  26.  
  27.  
  28. @Override
  29. public int compareTo(Helper<V> o) {
  30. return priority-o.priority;
  31. }
  32.  
  33.  
  34. }
  35.  
  36.  
  37. public PriorityThreadPool(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit,
  38. PriorityBlockingQueue<Runnable> workQueue) {
  39. super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
  40. }
  41.  
  42. public <V> void execute(Runnable r,V result,int priority){
  43. RunnableFuture<V> rh=new Helper<V>(r,result, priority);
  44. super.execute(rh);
  45. }
  46.  
  47. public <V> Future<V> submit(Callable<V> c, int priority){
  48. RunnableFuture<V> r=new Helper<V>(c, priority);
  49. super.execute(r);
  50. return r;
  51. }
  52.  
  53. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement