Re: [問題] 請問有辦法設定編號來決定排程嗎

看板java作者 (畢業了..@@")時間10年前 (2014/11/13 22:10), 10年前編輯推噓1(101)
留言2則, 1人參與, 最新討論串4/5 (看更多)
※ 引述《PTTCATKING (懷念美國貓王)》之銘言: : 假設有二十個任務要跑 : 而他在DB裡會有兩組編號(欄位名稱) : 第一組是1~20的流水號 : 第二組是執行優先順序(記錄需等待的對象) : A 跑完 同時執行 B & CD 兩條線同時跑,而B會先跑完,但要等CD都跑完後,BCD都結束 : 才開始跑E : A的編號就是 1 0 (無等待對象) : B的編號就是 2 1 (等待A,1是A的編號) : C的編號就是 3 1 (等待A,1是A的編號) : D的編號就是 4 3 (等待C,3是C的編號) : E的編號就是 5 2 (等待B,2是B的編號) : E的編號就是 5 4 (等待D,4是D的編號) : 因為E要等兩個,所以在DB裡 E 會有兩筆資料 : 請問 有沒有什麼現有套件有能夠執行這件事情呢 : 設定那兩個編號,則程式執行後就按照兩個編號,決定程式優先順序,並有可能同時執行 : 多程序 : 以後維護就是設定編號就能決定跑程式的優先順序 : 今天用CountDownLatch寫出類似的東西,被認為是寫死的東西orz : 這是用排程器???或是什麼方向呢?? @O@ : 能否有高手指點明燈給我方向,謝謝 T_T 可以用java8的CompletableFuture啊 class MyTask implements Runnable { private String name; public MyTask(String name) { this.name = name; } public void run() { try { System.out.printf("Task %s\n", name); Thread.sleep((long) (new Random().nextDouble() * 1000)); System.out.printf("Task %s complete\n", name); } catch (Exception e){} } } public class Scheduler { public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService executor = Executors.newFixedThreadPool(3); CompletableFuture<Void> a = CompletableFuture .allOf() .thenRunAsync(new MyTask("a"), executor); CompletableFuture<Void> b = CompletableFuture .allOf(a) .thenRunAsync(new MyTask("b"), executor); CompletableFuture<Void> c = CompletableFuture .allOf(a) .thenRunAsync(new MyTask("c"), executor); CompletableFuture<Void> d = CompletableFuture .allOf(c) .thenRunAsync(new MyTask("d"), executor); CompletableFuture<Void> e = CompletableFuture .allOf(b, d) .thenRunAsync(new MyTask("e"), executor); CompletableFuture<Void> all = CompletableFuture .allOf(a,b,c,d,e); all.get(); System.out.print("Complete"); executor.shutdown(); } } 出來結果 Task a Task a complete Task c Task b Task b complete Task c complete Task d Task d complete Task e Task e complete Complete 因為用random sleep,所以每次結果會稍微不同喲!! -- ※ 發信站: 批踢踢實業坊(ptt.cc), 來自: 1.171.17.146 ※ 文章網址: http://www.ptt.cc/bbs/java/M.1415887801.A.14C.html ※ 編輯: popcorny (1.171.17.146), 11/13/2014 22:20:38

11/13 22:20, , 1F
這個解法好!看來要多研究來!!
11/13 22:20, 1F

11/17 09:51, , 2F
不過原PO是要解資料結構阿~
11/17 09:51, 2F
文章代碼(AID): #1KPBkv5C (java)
文章代碼(AID): #1KPBkv5C (java)