I'm trying to schedule at fixed rate a task for each of 9~ ai users. For some reason saving the ScheduledFuture object seems to stop the loop. When i run like below, the bolded trace does not run.
Code: Select all
public void addAIDrafters(List<User> aiDrafterList){
Integer x = 5;
for (User aiDrafter : aiDrafterList){
AIDraftPlayer aiDraftPlayer = new AIDraftPlayer(aiDrafter, this);
ScheduledFuture<?> draftStartTimer = ts.scheduleAtFixedRate(aiDraftPlayer, x, 5, TimeUnit.SECONDS);
aiDrafters.put(aiDrafter.getName(), draftStartTimer);
[b] trace("WILL START IN "+x);[/b]
x += 2;
}
}
If I stop saving the ScheduledFuture object, like below, the loop runs as expected. All tasks get scheduled, and execute at intervals. Unfortunately, this is not good enough, because i need to save the ScheduledFuture objects so I have a way of stopping them later.
Code: Select all
public void addAIDrafters(List<User> aiDrafterList){
Integer x = 5;
for (User aiDrafter : aiDrafterList){
AIDraftPlayer aiDraftPlayer = new AIDraftPlayer(aiDrafter, this);
ts.scheduleAtFixedRate(aiDraftPlayer, x, 5, TimeUnit.SECONDS);
[b] trace("WILL START IN "+x);[/b]
x += 2;
}
}
My background is mostly javascript, so don't know much about threads. I'm guessing the problem is in a lack of understanding of Java basics. Any help would be appreciated. Thanks!!