我很想知道是否有类似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