我很想知道是否有類似Java中的C#和/或Android SDK中的任務並行庫。來自C#的背景,我們被教導說,創建一個新線程是一個相對重要的操作,並且被指示使用線程池,或者最近的任務。TPL等效於Java/Android
因此,在我看來,任務帶來的抽象級別是理想的......有沒有類似的東西,甚至是線程池?或者是否全部只涉及製作新的Thread或製作my own threadpool
我很想知道是否有類似Java中的C#和/或Android SDK中的任務並行庫。來自C#的背景,我們被教導說,創建一個新線程是一個相對重要的操作,並且被指示使用線程池,或者最近的任務。TPL等效於Java/Android
因此,在我看來,任務帶來的抽象級別是理想的......有沒有類似的東西,甚至是線程池?或者是否全部只涉及製作新的Thread或製作my own threadpool
當然它。你可以閱讀更多關於它在這裏:Executors
此外,您可以在同一頁面概述整個併發話題:Concurrency
除非我錯過了一些東西,否則這不會提供延續支持。並不是說你無法在此基礎上實現它,但我懷疑這很難做到,並且在語法上也會非常糟糕。 –
@KentBoogaart是的,Java沒有提供類似於繼續任務的任何東西,你必須自己編寫它。就我個人而言,我認爲延續任務是一個不好的方面,但如果你進入它,你可以看看Lightwolf框架:http://lightwolf.sourceforge.net/index.html – bezmax
瞭解更多。似乎我可以使用fork/join的東西來實現類似的性質,但不知道它會是多麼優雅/可維護。 –
據Java開發人員,Java併發編程應該邁向新併發的使用是移動API。
檢查:http://download.oracle.com/javase/1.5.0/docs/guide/concurrency/index.html
Android已經對Java類併發庫的支持,但你應該看看它支持的UI線程,並在後臺兩個運行的操作AsyncTask。
這裏是一個任務的簡單的例子:
private class CharCountTask extends AsyncTask<String, Integer, Long> {
protected Long doInBackground(String... in) {
long result = 0;
for(int i=0,n=in.length; i<n; i++) {
result += in[i].length();
publishProgress((int) (i/(double) count) * 100);
}
return result;
}
protected void onProgressUpdate(Integer... progress) {
// update progress here
updateProgressBar(progress[0]);
}
protected void onPostExecute(Long result) {
// update the UI here
setTotalChars(result);
}
}
要使用它:
new CharCountTask().execute("first", "second", "third");
看在https://github.com/dtag-dbu/task4java/的Task4Java框架。
該框架構建於標準Java庫上,也可在Android上運行。目前我們正在創建一個示例應用程序來展示這個框架的強大功能。
關於「重量級操作」的聲明,請參閱http://stackoverflow.com/questions/2117072/java-thread-creation-overhead – skaffman
看到這個問題是3歲 - 任何人都有一個更新的狀態今天藝術?我們是否仍在使用Executors和Java 5 Concurrency?或者是否有像Java 8或RxJava這樣的新實現來解決這個問題? – Nilzor