Fork of Poseidon providing Bukkit #1060 to older Beta versions (b1.0-b1.7.3)
at develop 68 lines 2.0 kB view raw
1package org.bukkit.craftbukkit.scheduler; 2 3import org.bukkit.plugin.Plugin; 4 5import java.util.HashSet; 6import java.util.Iterator; 7 8public class CraftThreadManager { 9 10 final HashSet<CraftWorker> workers = new HashSet<CraftWorker>(); 11 12 void executeTask(Runnable task, Plugin owner, int taskId) { 13 14 CraftWorker craftWorker = new CraftWorker(this, task, owner, taskId); 15 synchronized (workers) { 16 workers.add(craftWorker); 17 } 18 19 } 20 21 void interruptTask(int taskId) { 22 synchronized (workers) { 23 Iterator<CraftWorker> itr = workers.iterator(); 24 while (itr.hasNext()) { 25 CraftWorker craftWorker = itr.next(); 26 if (craftWorker.getTaskId() == taskId) { 27 craftWorker.interrupt(); 28 } 29 } 30 } 31 } 32 33 void interruptTasks(Plugin owner) { 34 synchronized (workers) { 35 Iterator<CraftWorker> itr = workers.iterator(); 36 while (itr.hasNext()) { 37 CraftWorker craftWorker = itr.next(); 38 if (craftWorker.getOwner().equals(owner)) { 39 craftWorker.interrupt(); 40 } 41 } 42 } 43 } 44 45 void interruptAllTasks() { 46 synchronized (workers) { 47 Iterator<CraftWorker> itr = workers.iterator(); 48 while (itr.hasNext()) { 49 CraftWorker craftWorker = itr.next(); 50 craftWorker.interrupt(); 51 } 52 } 53 } 54 55 boolean isAlive(int taskId) { 56 synchronized (workers) { 57 Iterator<CraftWorker> itr = workers.iterator(); 58 while (itr.hasNext()) { 59 CraftWorker craftWorker = itr.next(); 60 if (craftWorker.getTaskId() == taskId) { 61 return craftWorker.isAlive(); 62 } 63 } 64 // didn't find it, so it must have been removed 65 return false; 66 } 67 } 68}