Warning: file_get_contents(/data/phpspider/zhask/data//catemap/3/clojure/3.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
Java中的异步任务模式_Java_Multithreading_Asynchronous - Fatal编程技术网

Java中的异步任务模式

Java中的异步任务模式,java,multithreading,asynchronous,Java,Multithreading,Asynchronous,我正在从C#转移到Java,我需要实现一组异步任务 我对Java线程有很好的了解,但我喜欢.NET的BeginInvoke和EndInvoke方法,因为它们允许我轻松地从同步任务切换到异步任务 在我的例子中,如果我有一组I/O密集型操作(适合更改为异步),如下所示: DoOperation1(); DoOperation2(); DoOperation3(); 在.NET中,我可以轻松地执行以下操作: BeginInvoke(DoOperation1); BeginInvoke(DoOpera

我正在从C#转移到Java,我需要实现一组异步任务

我对Java线程有很好的了解,但我喜欢.NET的
BeginInvoke
EndInvoke
方法,因为它们允许我轻松地从同步任务切换到异步任务

在我的例子中,如果我有一组I/O密集型操作(适合更改为异步),如下所示:

DoOperation1();
DoOperation2();
DoOperation3();
在.NET中,我可以轻松地执行以下操作:

BeginInvoke(DoOperation1);
BeginInvoke(DoOperation2);
BeginInvoke(DoOperation3);
EndInvoke(Result1);
EndInvoke(Result2);
EndInvoke(Result3);
简单地说,我的问题是:Java中是否有类似的东西,或者我是否需要以“旧方式”手动使用线程


谢谢。

我认为您可能希望与可运行或可调用类一起使用,这些类包装您尝试运行的作业的实现

例如:

SomeTask someTask1 = ...
SomeTask someTask2 = ...

executorService.execute(someTask1);
executorService.execute(someTask2);

executorService.shutdown(); //Close down the service
您可能希望在Java中使用futures。您向提交任务并收到一个回执,您可以通过与.NET 4 TPL中的任务类似的方式请求查看。。。您可以通过阻塞方式询问future的结果,或者通过超时询问是否已完成等

使用
Callable
不如通过方法组转换和lambda表达式在C#中使用委托那么简单,但基本思想是相似的