→ foreverk: 再看一下SlowCalculator裡面的run? 03/09 08:31
→ a12838910: 你可以問問chat 03/09 08:48
→ ssccg: 這邊 new Runnable @Override run 是為了在 s.run 外面再包 03/09 09:56
→ ssccg: 別的動作一起跑,就是必要的,跟你的SlowCalculator是不是 03/09 09:59
→ ssccg: Runnable沒什麼關係 03/09 09:59
→ ssccg: 要改頂多就是 new Runnable() 換成 new SlowCalculator(n) 03/09 10:00
→ ssccg: SlowCalculator s = new SlowCalculator(n); 刪掉 03/09 10:00
→ ssccg: s.run() 改成 super.run(),邏輯上沒什麼變化一樣是去包 03/09 10:00
→ ssccg: SlowCalculator.run 03/09 10:01
→ ssccg: 這是Decorator pattern,跟thread、runnable沒什麼關係 03/09 10:08
→ ssccg: 如果你是想把整個pattern改掉,那就想想你要怎樣、在哪去動 03/09 10:13
→ ssccg: results、runningCalculations 03/09 10:13
推 MoonCode: java也太難了 03/09 10:20
推 OriginStar: 原PO可以想成用戶可以同時輸入多個指令(像是批次處理) 03/09 11:14
→ OriginStar: 或多個用戶可以同時輸入指令,然後等待處理結果 03/09 11:15
→ OriginStar: 處理過程可以交給別的thread處理,所以看起來會有2層 03/09 11:17
推 dnzteeqrq: 如果SlowCalculator有實作Runnable本身就是Runnable 03/09 11:31
→ OriginStar: 如果是問Thread與Runnable的關係,舉例就是在外送平台 03/09 11:32
→ OriginStar: 點餐(Runnable),但實際上要有人送(Thread) 03/09 11:34
→ dnzteeqrq: 要考慮執行序執行完才能 getResult() 03/09 11:35
→ OriginStar: 能跑是因為new了Thread的,不是new Runnable 03/09 11:36
→ alan3100: www.baeldung.com/java-asynchronous-programming 03/09 18:35
→ alan3100: runnable是新增class thread是新增instance 不要搞錯了 03/09 18:46
→ cyntasha: 非常感謝各位高手解惑 已在runCommand加上isalive判斷 03/10 08:47
→ cyntasha: 寫出把new runnable跟void run拿掉感覺能跑的版本 03/10 08:47