Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- import java.util.ArrayList;
- import java.util.HashMap;
- /**
- * Created by ilnur on 26.05.16.
- */
- public class Scheduler {
- public void schedule(Task t) throws Exception {
- color = new HashMap<>();
- topSortOrder = new ArrayList<>();
- orderTasks(t);
- for (Task task : topSortOrder) {
- task.execute();
- }
- }
- private void orderTasks(Task t) throws Exception {
- color.put(t, 1);
- for (Task dep : t.dependencies()) {
- int c = color.getOrDefault(dep, 0);
- if (c == 0) {
- orderTasks(dep);
- }
- else if (c == 1) {
- throw new Exception("cycle detected");
- }
- }
- color.put(t, 2);
- topSortOrder.add(t);
- }
- private HashMap<Task, Integer> color;
- private ArrayList<Task> topSortOrder;
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement