多執行緒程式設計七 Furture模式

2021-10-07 17:20:48 字數 1294 閱讀 2991

furture模式是把乙個任務拆成多個子任務,沒有依賴關係的子任務來並行執執行的模式,旨在提高程式處理效率

假如說做飯需要三步,買菜(2秒)、買油(3秒)、炒菜(4秒)三步,其中買菜、買油可以兩個人同時做,炒菜依賴買菜、買油的結果。

private string buyvegetable()  catch (interruptedexception e) 

log.info("buyvegetable done");

return "vegetable";

}private string buyoil() catch (interruptedexception e)

log.info("buyoil done");

return "oil";

}public void cooking(string oil, string vegetable) catch (interruptedexception e)

log.info("cooking done");

}

測試**:

private executorservice executor = executors.newcachedthreadpool();

@test

public void testfuture() throws interruptedexception, executionexception

輸出:

2020-07-02 20:26:40.765 - [pool-1-thread-1] info  com.demo.util.ftputiltest : 47 - buyvegetable done

2020-07-02 20:26:41.764 - [pool-1-thread-2] info  com.demo.util.ftputiltest : 57 - buyoil done

2020-07-02 20:26:41.764 - [main] info  com.demo.util.ftputiltest : 62 - oil and vegetable get, start cooking

2020-07-02 20:26:45.779 - [main] info  com.demo.util.ftputiltest : 68 - cooking done

2020-07-02 20:26:45.779 - [main] info  com.demo.util.ftputiltest : 38 - cost: 7061

可以看到,買蔬菜和買油是兩個執行緒執行的,總耗時似乎7秒左右而不是序列下的9秒

七 多執行緒程式設計5 建立多執行緒

到目前為止,我們僅用到兩個執行緒 主線程和乙個子執行緒。然而,你的程式可以建立所需的更多執行緒。例如,下面的程式建立了三個子執行緒 create multiple threads.class newthread implements runnable this is the entry point ...

七 多執行緒程式設計10 執行緒死鎖

需要避免的與多工處理有關的特殊錯誤型別是死鎖 deadlock 死鎖發生在當兩個執行緒對一對同步物件有迴圈依賴關係時。例如,假定乙個執行緒進入了物件x的管程而另乙個執行緒進入了物件y的管程。如果x的執行緒試圖呼叫y的同步方法,它將像預料的一樣被鎖定。而y的執行緒同樣希望呼叫x的一些同步方法,執行緒永...

多執行緒程式設計(七)鎖Lock

測試 public class reentrantlocktest for int i 0 i 10 i finally 測試結果 加鎖次數0 加鎖次數1 加鎖次數2 加鎖次數3 加鎖次數4 加鎖次數5 加鎖次數6 加鎖次數7 加鎖次數8 加鎖次數9 解鎖次數0 解鎖次數1 解鎖次數2 解鎖次數3 ...