實現runnable介面,實現run()方法
future介面+callable介面+executor介面
runnable介面被設計成執行緒設計的一種公共協議。
thread類就是一種runnable介面的實現。
當乙個實現了runnable介面的執行緒類開始執行,就會自動呼叫run()方法。
實現runnable介面,必須重寫run()方法。
建議在run()方法中存放所有的業務**,做到執行緒控制與業務流程的分離。
run()方法返回型別為void,引數為空。
run()方法不能丟擲異常。
//定義
public class myrunnableimpl implements runnable
}//使用
new thread(new myrunnableimpl()).start();
當然,這裡也可以寫lambda表示式~
runnable實現類本身並不能啟動,需要thread()類的協助。
public class test implements runnable
public static void main(string args)
}
public class test,"執行緒1").start();}}
@slf4j
public class myrunnableimpl implements runnable
public void setname(string name)
public myrunnableimpl(string name)
@override
public void run() 正在執行,預計時間{}.....",this.getname(),interval);
try catch (interruptedexception e)finally 執行結束....",this.getname());}}
public static void main(string args) }}
結果:
//定義
public class mythread extends thread
}//使用
new mythread().start();
--------或者----
thread t1 = new thread(new runnable());
t1.start();
無法丟擲異常:不能宣告式的丟擲異常,增加了某些情況下的程式開發複雜度。
無法手動取消執行緒:只能等待執行緒執行完畢或達到某種結束條件,無法直接取消執行緒任務。
一般是配合執行緒池來使用。
callable介面實現的任務必須返回乙個結果並且丟擲乙個異常。
callable介面的實現類需要重寫乙個無參的方法call()。
callable介面與runnable介面類似,都是為了實現多執行緒而設計的。
runnable介面沒有返回值,也無法丟擲異常。
callable介面是乙個泛型介面。
//定義
public class mycallableimpl implements callable
}//使用
//一般配置executor使用,executor提供執行緒池服務
executorservice executor = new ....
//一般配置future介面使用,future用於儲存返回結果
//向執行緒池提交乙個任務,並把此任務的執**況儲存在future中
futrue future = executor.submit(new mycallableimple());
//獲取返回結果
future.get();
//關閉執行緒池和任務
executor.shutdwon();
callable介面用於定義任務類,並在call()方法中定義業務**。
executor介面負責執行緒池的管理(計畫在後續章節進行學習)。
future介面負責保持在executor執行緒池中執行的callable任務的執行狀態。
callable介面實現類,通過executor.submit()向執行緒池提交任務。
future介面通過get()方法獲取執行結果(一直等待知道結果產生)。
一定要記得通過executor.shutdwon()關閉執行緒池。推薦在finally中進行這個操作。
@slf4j
public class myrunnableimpl implements callable
public static void main(string args) throws exception
//輸出結果
當然,後面會詳細介紹這個~
多執行緒 實現多執行緒的幾種方式
public class mythread extends thread mythread mythread1 newmythread mythread mythread2 newmythread mythread1.start mythread2.start public class mythre...
同步,多執行緒 ,多執行緒方式實現併發。
io請求幾乎不佔cpu的。同步請求相當於排隊買東西,乙個卡主了,其他的都結不了賬了。執行緒並不是越多越好,如果他特別多還不如同步高,所以對執行緒要有個限制,所以就出現了執行緒池,執行緒池在python3裡才有的,python2裡沒有的。建立程序的話是耗費很多資源的,建立執行緒是幾乎不耗費資源的。建立...
多執行緒的幾種實現方式
前面兩種可以歸結為一類 無返回值,原因很簡單,通過重寫run方法,run方式的返回值是void,所以沒有辦法返回結果 後面兩種可以歸結成一類 有返回值,通過callable介面,就要實現call方法,這個方法的返回值是object,所以返回的結果可以放在object物件中 方式1 繼承thread類...