Advertisement
Guest User

Untitled

a guest
May 26th, 2016
61
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
Java 0.88 KB | None | 0 0
  1. import java.util.ArrayList;
  2. import java.util.HashMap;
  3.  
  4. /**
  5.  * Created by ilnur on 26.05.16.
  6.  */
  7. public class Scheduler {
  8.  
  9.     public void schedule(Task t) throws Exception {
  10.         color = new HashMap<>();
  11.         topSortOrder = new ArrayList<>();
  12.  
  13.         orderTasks(t);
  14.  
  15.         for (Task task : topSortOrder) {
  16.             task.execute();
  17.         }
  18.     }
  19.  
  20.     private void orderTasks(Task t) throws Exception {
  21.         color.put(t, 1);
  22.  
  23.         for (Task dep : t.dependencies()) {
  24.             int c = color.getOrDefault(dep, 0);
  25.  
  26.             if (c == 0) {
  27.                 orderTasks(dep);
  28.             }
  29.             else if (c == 1) {
  30.                 throw new Exception("cycle detected");
  31.             }
  32.         }
  33.  
  34.         color.put(t, 2);
  35.         topSortOrder.add(t);
  36.     }
  37.  
  38.     private HashMap<Task, Integer> color;
  39.     private ArrayList<Task> topSortOrder;
  40. }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement