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