如何实现真正的异步Java线程
我有一个需要执行两项操作的功能,一项功能完成得很快,而一项则需要很长时间才能运行。我希望能够将长时间运行的操作委派给线程,并且我不在乎线程何时完成,但是线程需要完成。我实现了如下所示的方法,但是由于函数在start()调用后退出,因此我的第二个操作从未完成。如何确保函数返回但第二个操作线程也完成其执行并且不依赖于父线程?
public void someFunction(String data){
smallOperation()
SecondOperation a = new SecondOperation();
Thread th = new Thread(a);
th.Start();
}
class SecondOperation implements Runnable
{
public void run(){
// doSomething long running
}
}
回答:
public void someFunction(final String data) { shortOperation(data);
new Thread(new Runnable() {
public void run(){
longOperation(data);
}
}).start();
}
如果someFunction
调用了longOperation
if ,则JVM将运行if
- 运行它的线程未标记为 守护程序 (在上面的代码中没有)
- 在
longOperation()
不抛出一个异常 - 没有调用System.exit()
longOperation()
以上是 如何实现真正的异步Java线程 的全部内容, 来源链接: utcz.com/qa/434479.html