您好,登錄后才能下訂單哦!
這篇“java多線程中的回調如何運用”文章的知識點大部分人都不太理解,所以小編給大家總結了以下內容,內容詳細,步驟清晰,具有一定的借鑒價值,希望大家閱讀完這篇文章能有所收獲,下面我們一起來看看這篇“java多線程中的回調如何運用”文章吧。
1.回調方式
(1)class A實現接口CallBack callback——背景1
(2)class A中包含一個class B的引用b ——背景2
(3)class B有一個參數為callback的方法f(CallBack callback) ——背景3
(4)A的對象a調用B的方法 f(CallBack callback) ——A類調用B類的某個方法 C
(5)然后b就可以在f(CallBack callback)方法中調用A的方法 ——B類調用A類的某個方法D
2.多線程中的回調
Java多線程中可以通過callable和future或futuretask結合來獲取線程執行后的返回值。實現方法是通過get方法來調用callable的call方法獲取返回值。
其實這種方法本質上不是回調,回調要求的是任務完成以后被調用者主動回調調用者的接口。而這里是調用者主動使用get方法阻塞獲取返回值。
public class 多線程中的回調 { //這里簡單地使用future和callable實現了線程執行完后 public static void main(String[] args) throws ExecutionException, InterruptedException { ExecutorService executor = Executors.newCachedThreadPool(); Future<String> future = executor.submit(new Callable<String>() { @Override public String call() throws Exception { System.out.println("call"); TimeUnit.SECONDS.sleep(1); return "str"; } }); //手動阻塞調用get通過call方法獲得返回值。 System.out.println(future.get()); //需要手動關閉,不然線程池的線程會繼續執行。 executor.shutdown(); //使用futuretask同時作為線程執行單元和數據請求單元。 FutureTask<Integer> futureTask = new FutureTask(new Callable<Integer>() { @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); } }
以上就是關于“java多線程中的回調如何運用”這篇文章的內容,相信大家都有了一定的了解,希望小編分享的內容對大家有幫助,若想了解更多相關的知識內容,請關注億速云行業資訊頻道。
免責聲明:本站發布的內容(圖片、視頻和文字)以原創、轉載和分享為主,文章觀點不代表本網站立場,如果涉及侵權請聯系站長郵箱:is@yisu.com進行舉報,并提供相關證據,一經查實,將立刻刪除涉嫌侵權內容。