
Untitled
By: a guest on
May 7th, 2012 | syntax:
None | size: 1.39 KB | hits: 7 | expires: Never
ScheduledThreadPoolExecutor changing tasks in real time
public void execute() {
ScheduledThreadPoolExecutor scheduler = new ScheduledThreadPoolExecutor(3);
scheduler.scheduleAtFixedRate(new ServPresTimer(player), 0, 30, TimeUnit.SECONDS);
if (!isRMI) {
scheduler.scheduleAtFixedRate(new P2PTimer(player), 1, 60, TimeUnit.SECONDS);
} else {
scheduler.scheduleAtFixedRate(new RMITimer(player), 1, 60, TimeUnit.SECONDS);
}
}
public class P2POrRMITimer implements Runnable {
private Runnable p2p;
private Runnable rmi;
private ObjectWhichContainsTheFlag flagContainer;
public P2POrRMITimer(Runnable p2p,
Runnable rmi,
ObjectWhichContainsTheFlag flagContainer) {
this.p2p = p2p;
this.rmi = rmi;
this.flagContainer = flagContainer;
}
@Override
public void run() {
if (flagContainer.isRmi()) {
rmi.run();
}
else {
p2p.run();
}
}
}
...
scheduler.scheduleAtFixedRate(new P2POrRMITimer(new P2PTimer(player),
new RMITimer(player),
this),
1,
60,
TimeUnit.SECONDS);
private volatile boolean isRMI;