原文:
public
inte***ce callable
public
inte***ce runnable
class
mycallabletask
implements
callable
}
futuretask類同時實現了兩個介面,future和runnable介面,所以它既可以作為runnable被執行緒執行,又可以作為future得到callable的返回值。
callable<
integer
> mycallabletask =
new mycallabletask();
futuretask<
integer
> futuretask=
new futuretask<
integer
>(mycallabletask);
newthread(futuretask).start();
執行緒池中執行callable任務的原型例如:
public
inte***ce
executorservice
extends
executor
executorservice exec = executors.newcachedthreadpool();
future
future = exec.submit(new mycallabletask());
public
class callableandfuturetask
};futuretaskfuture = new futuretask(callable);
new thread(future).start();
try catch (interruptedexception e) catch (executionexception e)
}}
public
class callableandfuture
});try catch (interruptedexception e) catch (executionexception e)
}}
class mycallabletask implements callable
@override
public string call() throws exception
return
"result of callable: "+id;
}
}public
class test
for (futurefs : results) catch (exception e)
} else
}
exec.shutdown();
} }
Java併發之執行緒池學習筆記
juc包下有乙個重要的執行緒池的實現,大大優化方便了我們對執行緒的使用,而不再是傳統的new乙個thread。執行緒池相對傳統的直接建立執行緒主要有三個優點 1.統一管理執行緒,可以重用存在的執行緒,避免多次的建立 消亡的開銷,使得效能表現得更好 2.可以有效控制最大併發執行緒數,提高系統資源利用率...
Java併發 JAVA併發程式設計實戰 讀書筆記3
發布乙個物件的意思是使它能夠被當前範圍之外的 所使用。比如將乙個引用儲存到其他 可以訪問的地方,在乙個非私有的方法中返回這個引用。在很多情況下,我們需要確保物件及它們的內部狀態不被暴露。乙個物件在尚未準備好時就將它發布,稱作逸出。最常見的發布物件的方式就是將物件的引用儲存到公共靜態域中,任何類和執行...
Java併發 JAVA併發程式設計實戰 讀書筆記8
為計算結果建立高效 可伸縮的快取記憶體 public inte ce computable public class expensivefunction implements computable public class memoizer1implements computable public ...