Don't like ads? PRO users don't see any ads ;-)
Guest

Untitled

By: a guest on May 7th, 2012  |  syntax: None  |  size: 1.39 KB  |  hits: 7  |  expires: Never
download  |  raw  |  embed  |  report abuse  |  print
Text below is selected. Please press Ctrl+C to copy to your clipboard. (⌘+C on Mac)
  1. ScheduledThreadPoolExecutor changing tasks in real time
  2. public void execute() {
  3.  
  4.         ScheduledThreadPoolExecutor scheduler = new ScheduledThreadPoolExecutor(3);
  5.  
  6.         scheduler.scheduleAtFixedRate(new ServPresTimer(player), 0, 30, TimeUnit.SECONDS);
  7.  
  8.         if (!isRMI) {
  9.             scheduler.scheduleAtFixedRate(new P2PTimer(player), 1, 60, TimeUnit.SECONDS);
  10.         } else {
  11.             scheduler.scheduleAtFixedRate(new RMITimer(player), 1, 60, TimeUnit.SECONDS);
  12.         }
  13.     }
  14.        
  15. public class P2POrRMITimer implements Runnable {
  16.     private Runnable p2p;
  17.     private Runnable rmi;
  18.     private ObjectWhichContainsTheFlag flagContainer;
  19.  
  20.     public P2POrRMITimer(Runnable p2p,
  21.                          Runnable rmi,
  22.                          ObjectWhichContainsTheFlag flagContainer) {
  23.         this.p2p = p2p;
  24.         this.rmi = rmi;
  25.         this.flagContainer = flagContainer;
  26.     }
  27.  
  28.     @Override
  29.     public void run() {
  30.         if (flagContainer.isRmi()) {
  31.             rmi.run();
  32.         }
  33.         else {
  34.             p2p.run();
  35.         }
  36.     }
  37. }
  38.  
  39. ...
  40.  
  41. scheduler.scheduleAtFixedRate(new P2POrRMITimer(new P2PTimer(player),
  42.                                                 new RMITimer(player),
  43.                                                 this),
  44.                               1,
  45.                               60,
  46.                               TimeUnit.SECONDS);
  47.        
  48. private volatile boolean isRMI;