thread、runnable、callable,其中runnable實現的是void run()方法,callable實現的是 v call()方法,並且可以返回執行結果,其中runnable可以提交給thread來包裝下,直接啟動乙個執行緒來執行,而callable則一般都是提交給executeservice來執行。
executor就是runnable和callable的排程容器,future就是對於具體的排程任務的執行結果進行檢視,最為關鍵的是future可以檢查對應的任務是否已經完成,也可以阻塞在get方法上一直等待任務返回結果。runnable和callable的差別就是runnable是沒有結果可以返回的,就算是通過future也看不到任務排程的結果的。
future<?> runnable1 = executor.submit(new runnable()
});
system.out.println("runnable1:" + runnable1.get()); //返回空
futurefuture1 = executor.submit(new callable()
});
system.out.println("task1: " + future1.get());
executoreserviec 的anvakeall()可以使所有執行緒執行完後再執行主線程,submit()不會阻塞主線程,futrue的get()方法會阻塞其他執行緒
java中線程的知識04
執行緒同步其實就是兩個問題 執行緒間共享資料的問題。執行緒同步的實現機制。首先明白,為什麼要執行緒同步 多執行緒併發執行訪問同一資料時,容易發生資料狀態不定,所以我們需要執行緒同步。demo 如下,我們建立乙個共享的data資料,理想情況下,我們希望變數 i 的值交替輸出 可是結果卻不是我們所想要的...
php 某些可能的小知識
自己遇到的一些小問題,都留個備份也方便自己找 二維陣列按照某欄位排序 file array column arr file array multisort file sort desc arr 2.富文字增加網域名稱 富文字增加網域名稱 param string content 富文字的內容 par...
Java多執行緒基礎知識
一 執行緒執行狀態 1.執行緒執行狀態圖 執行緒共包括以下5種狀態。1.新建狀態 new 執行緒物件被建立後,就進入了新建狀態。例如,thread thread new thread 2.就緒狀態 runnable 也被稱為 可執行狀態 執行緒物件被建立後,其它執行緒呼叫了該物件的start 方法,...