1.什麼是callable
是乙個多執行緒的實現方案,與thread和runable不同的是,callable需要重寫call方法,並且call方法是有返回值的,通過.get方法呼叫
2.future模式的核心
去除了主函式的等待時間,並使得原本需要等待的時間段可以用於處理其他業務邏輯
3.future常用方法:
1)v get():獲取非同步執行的結果,如果沒有結果可用,此方法會阻塞,直到非同步計算完成。
2)v get(long timeout,timeunit unit)在get方法基礎上增加阻塞時間限制,超過時間,丟擲異常。
3)boolean isdone():任務執行結束後,無論是否為正常結束還是發生異常,都返回true。
4)boolean iscanceller():如果任務完成前被取消,則返回true。
5)boolean cancel(boolean mayinterruprunning):如果任務還沒開始,執行cancel(...)方法將返回false;如果任務已經啟動,執行cancel(true)方法,將中斷執行此任務執行緒的方式來試圖停止任務,如果停止成功,返回ture;當任務已啟動,執行cancel(false)方法將不會對正在執行的任務執行緒產生影響(讓執行緒正常執行到完成),此時返回false;當任務已經完成,執行 cancel(false)方法將返回false。maylnterruprunning引數表示是否中斷執行的執行緒
大體總結為三點:
1)能夠中斷執行中的任務
2)判斷任務是否執行完成
3)獲取任務執行完成後結果
4.手動實現future思路
package com.test;
//公共data資料結果
public abstract class data
package com.test;
//獲取真實資料
public class realdata extends data catch (interruptedexception e)
system.out.println("操作執行完畢。。。");
this.result = "執行結果1111";
} @override
public string getrequest()
}
package com.test;
//當有執行緒逍遙獲取realdata的時候,程式會被阻塞。等到realdata被注入才會使用getreal()方法。
public class futuredata extends data
//如果falg為false,沒有獲取到資料,傳遞realdata物件
this.realdata = realdata;
flag = true;
notify();
} @override
public synchronized string getrequest() catch (interruptedexception e)
} return realdata.getrequest();
}}
package com.test;
public class futureclient
}).start();
return futuredata;
}}
package com.test;
public class main
}
C 多執行緒 知識點記錄
今天接觸了c語言中的多執行緒,在這裡記錄一下 第一步 引入標頭檔案pthread.h include 第二步 運用函式 pthread t 建立執行緒控制代碼 pthread create 建立執行緒 引數 第乙個引數執行緒控制代碼 第二個引數null就行 第三個引數是函式名型別 void 第四個引...
多執行緒之知識點
多執行緒的學習 1.都不是原子操作,在多執行緒中值可能被改變 因此在多執行緒環境中對乙個變數進行讀寫時,我們需要有一種方法能夠保證對乙個值的遞增操作是原子操作 即不可打斷性,乙個執行緒在執行原子操作時,其它執行緒必須等待它完成之後才能開始執行該原子操作。這種涉及到硬體的操作會不會很複雜了,幸運的是,...
多執行緒知識點總結
多執行緒的問題主要圍繞3個問題處理 1.原子性,2.可見性,3.有序性 1.原子性,不可被其他執行緒打斷的操作。如read.write sychronized 2.可見性 一條執行緒修改了某值,新值對其他執行緒立即可知 普通變數是通過主記憶體完成多執行緒的共享,因此在多執行緒的情況下,很多髒資料。v...