Java中的异步任务模式
我正在从C#转移到Java,我需要实现一组异步任务 我对Java线程有很好的了解,但我喜欢.NET的Java中的异步任务模式,java,multithreading,asynchronous,Java,Multithreading,Asynchronous,我正在从C#转移到Java,我需要实现一组异步任务 我对Java线程有很好的了解,但我喜欢.NET的BeginInvoke和EndInvoke方法,因为它们允许我轻松地从同步任务切换到异步任务 在我的例子中,如果我有一组I/O密集型操作(适合更改为异步),如下所示: DoOperation1(); DoOperation2(); DoOperation3(); 在.NET中,我可以轻松地执行以下操作: BeginInvoke(DoOperation1); BeginInvoke(DoOpera
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#中使用委托那么简单,但基本思想是相似的