usr*_*ΛΩΝ 10 java multithreading asynchronous
我正在从C#转向Java,我需要实现一组异步任务.
我非常了解Java线程,但我喜欢.NET BeginInvoke和EndInvoke方法,因为它们允许我轻松地从同步切换到异步任务.
在我的例子中,如果我有一组I/O密集型操作(适合更改为异步),如下所示:
DoOperation1();
DoOperation2();
DoOperation3();
Run Code Online (Sandbox Code Playgroud)
在.NET中,我很容易做到这样的事情:
BeginInvoke(DoOperation1);
BeginInvoke(DoOperation2);
BeginInvoke(DoOperation3);
EndInvoke(Result1);
EndInvoke(Result2);
EndInvoke(Result3);
Run Code Online (Sandbox Code Playgroud)
简而言之,我的问题是:Java中有类似的东西,还是我需要手动使用线程"旧方法"?
谢谢.
Jon*_*eet 12
您可能希望在Java中使用期货.你提交一个任务ExecutorService并接收一个Future<T>你可以Task<T>从.NET 4 TPL 以类似的方式查看的后面...你可以以阻塞的方式或者超时询问未来的结果,询问它是否是完成等
使用Callable<T>不像在C#中通过方法组转换和lambda表达式使用委托一样整洁,但基本思想是相似的.