這篇“java多線程中的回調(diào)如何運用”文章的知識點大部分人都不太理解,所以小編給大家總結(jié)了以下內(nèi)容,內(nèi)容詳細(xì),步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“java多線程中的回調(diào)如何運用”文章吧。
渠縣ssl適用于網(wǎng)站、小程序/APP、API接口等需要進行數(shù)據(jù)傳輸應(yīng)用場景,ssl證書未來市場廣闊!成為創(chuàng)新互聯(lián)公司的ssl證書銷售渠道,可以享受市場價格4-6折優(yōu)惠!如果有意向歡迎電話聯(lián)系或者加微信:18982081108(備注:SSL證書合作)期待與您的合作!
1.回調(diào)方式
(1)class A實現(xiàn)接口CallBack callback——背景1
(2)class A中包含一個class B的引用b ——背景2
(3)class B有一個參數(shù)為callback的方法f(CallBack callback) ——背景3
(4)A的對象a調(diào)用B的方法 f(CallBack callback) ——A類調(diào)用B類的某個方法 C
(5)然后b就可以在f(CallBack callback)方法中調(diào)用A的方法 ——B類調(diào)用A類的某個方法D
2.多線程中的回調(diào)
Java多線程中可以通過callable和future或futuretask結(jié)合來獲取線程執(zhí)行后的返回值。實現(xiàn)方法是通過get方法來調(diào)用callable的call方法獲取返回值。
其實這種方法本質(zhì)上不是回調(diào),回調(diào)要求的是任務(wù)完成以后被調(diào)用者主動回調(diào)調(diào)用者的接口。而這里是調(diào)用者主動使用get方法阻塞獲取返回值。
public class 多線程中的回調(diào) { //這里簡單地使用future和callable實現(xiàn)了線程執(zhí)行完后 public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService executor = Executors.newCachedThreadPool(); Futurefuture = executor.submit(new Callable () { @Override public String call() throws Exception { System.out.println("call"); TimeUnit.SECONDS.sleep(1); return "str"; } }); //手動阻塞調(diào)用get通過call方法獲得返回值。 System.out.println(future.get()); //需要手動關(guān)閉,不然線程池的線程會繼續(xù)執(zhí)行。 executor.shutdown(); //使用futuretask同時作為線程執(zhí)行單元和數(shù)據(jù)請求單元。 FutureTask futureTask = new FutureTask(new Callable () { @Override public Integer call() throws Exception { System.out.println("dasds"); return new Random().nextInt(); } }); new Thread(futureTask).start(); //阻塞獲取返回值 System.out.println(futureTask.get()); } @Test public void test () { Callable callable = new Callable() { @Override public Object call() throws Exception { return null; } }; FutureTask futureTask = new FutureTask(callable); } }
以上就是關(guān)于“java多線程中的回調(diào)如何運用”這篇文章的內(nèi)容,相信大家都有了一定的了解,希望小編分享的內(nèi)容對大家有幫助,若想了解更多相關(guān)的知識內(nèi)容,請關(guān)注創(chuàng)新互聯(lián)行業(yè)資訊頻道。