摘要:類是一種有效的廣泛使用的以工作隊(duì)列為基礎(chǔ)的的線程池的正確實(shí)現(xiàn),無(wú)須嘗試編寫(xiě)自己的線程池這樣容易出錯(cuò)。是并發(fā)編程庫(kù)新添加的類它提供的方法可以返回各線程的返回值與接口類似于但是無(wú)法返回結(jié)果也無(wú)法返回異常。返回的結(jié)果可以被拿到。
package com.snda.sync.impl.test; import java.util.ArrayList; import java.util.concurrent.*; /** * Executor類是一種有效的廣泛使用的以工作隊(duì)列為基礎(chǔ)的的線程池的正確實(shí)現(xiàn),無(wú)須嘗試編寫(xiě)自己的線程池,這樣容易出錯(cuò)。 * Callable是并發(fā)編程庫(kù)Concurrent新添加的類,它提供的call()方法可以返回各線程的返回值 * Callable 與 future :http://blog.csdn.net/ghsau/article/details/7451464 * Callable 接口類似于Runnable但是Callable無(wú)法返回結(jié)果也無(wú)法返回異常。Callable返回的結(jié)果可以被Future拿到。 * 通過(guò)submit來(lái)執(zhí)行Callable線程并取得線程的返回值 * * 在Java中如果需要設(shè)定代碼執(zhí)行的最長(zhǎng)時(shí)間,即超時(shí),可以用Java的ExecutorService 類配合Future接口來(lái)實(shí)現(xiàn),Future接口 * 是Java線程的Future模式的實(shí)現(xiàn),可以來(lái)進(jìn)行異步運(yùn)算。 * Created by xuyifei on 14-4-22. */ class TaskWithResult implements Callable{ private int id; public TaskWithResult(int id) { this.id = id; } @Override public String call() throws Exception { return "result of TaskWithResult " + id; } } public class CallableDemo { public static void main(String[] args) { ExecutorService exec = Executors.newCachedThreadPool(); ArrayList > results = new ArrayList<>(); for (int i = 0; i < 10; i++) { results.add(exec.submit(new TaskWithResult(i))); } for (Future fs : results) { try { System.out.println(fs.get()); } catch (InterruptedException e) { e.printStackTrace(); } catch (ExecutionException e) { e.printStackTrace(); } finally { exec.shutdown(); } } } }
文章版權(quán)歸作者所有,未經(jīng)允許請(qǐng)勿轉(zhuǎn)載,若此文章存在違規(guī)行為,您可以聯(lián)系管理員刪除。
轉(zhuǎn)載請(qǐng)注明本文地址:http://systransis.cn/yun/64089.html
摘要:之前,使用匿名類給蘋(píng)果排序的代碼是的,這段代碼看上去并不是那么的清晰明了,使用表達(dá)式改進(jìn)后或者是不得不承認(rèn),代碼看起來(lái)跟清晰了。這是由泛型接口內(nèi)部實(shí)現(xiàn)方式造成的。 # Lambda表達(dá)式在《Java8實(shí)戰(zhàn)》中第三章主要講的是Lambda表達(dá)式,在上一章節(jié)的筆記中我們利用了行為參數(shù)化來(lái)因?qū)Σ粩嘧兓男枨?,最后我們也使用到了Lambda,通過(guò)表達(dá)式為我們簡(jiǎn)化了很多代碼從而極大地提高了我們的...
摘要:利用前面所述的方法,這個(gè)例子可以用方法引用改寫(xiě)成下面的樣子構(gòu)造函數(shù)引用對(duì)于一個(gè)現(xiàn)有構(gòu)造函數(shù),你可以利用它的名稱和關(guān)鍵字來(lái)創(chuàng)建它的一個(gè)引用。 第三章 Lambda表達(dá)式 函數(shù)式接口 函數(shù)式接口就是只定義一個(gè)抽象方法的接口,哪怕有很多默認(rèn)方法,只要接口只定義了一個(gè)抽象方法,它就仍然是一個(gè)函數(shù)式接口。 常用函數(shù)式接口 showImg(https://segmentfault.com/img...
摘要:當(dāng)我們希望能界定這二者之間的區(qū)別時(shí),我們將第一種稱為純粹的函數(shù)式編程,后者稱為函數(shù)式編程。函數(shù)式編程我們的準(zhǔn)則是,被稱為函數(shù)式的函數(shù)或方法都只能修改本地變量。另一種觀點(diǎn)支持引用透明的函數(shù)式編程,認(rèn)為方法不應(yīng)該有對(duì)外部可見(jiàn)的對(duì)象修改。 一、實(shí)現(xiàn)和維護(hù)系統(tǒng) 1.共享的可變數(shù)據(jù) 如果一個(gè)方法既不修改它內(nèi)嵌類的狀態(tài),也不修改其他對(duì)象的狀態(tài),使用return返回所有的計(jì)算結(jié)果,那么我們稱其為純粹...
摘要:無(wú)鎖無(wú)鎖的并行都是無(wú)障礙的,但不同的是無(wú)鎖的并發(fā)保證了必然有一個(gè)線程能夠在有限步驟內(nèi)離開(kāi)臨界區(qū)。有關(guān)并行的兩個(gè)重要定律未完待續(xù)實(shí)戰(zhàn)高并發(fā)程序設(shè)計(jì)第一章走入并行世界讀書(shū)筆記歡迎加入咖啡館的春天。 必須知道的幾個(gè)概念 同步(Synchronous)和異步(Asynchronous) 同步方法調(diào)用一旦開(kāi)始,調(diào)用者必須等待方法調(diào)用返回后才能繼續(xù)后續(xù)行為。異步方法調(diào)用更像一個(gè)消息傳遞,一旦開(kāi)始就...
閱讀 2113·2021-11-18 10:02
閱讀 2863·2021-09-04 16:41
閱讀 1156·2019-08-30 15:55
閱讀 1420·2019-08-29 17:27
閱讀 1106·2019-08-29 17:12
閱讀 2539·2019-08-29 15:38
閱讀 2864·2019-08-29 13:02
閱讀 2841·2019-08-29 12:29