pup*_*eno 8 java multithreading javafx task
除了知道任务状态和回调(已完成,失败等)的属性之外,在具有lambda的普通旧Java线程上使用JavaFX Task还有其他区别吗?
我不是在问什么是好或坏,我不是在问你认为我应该做什么,我要求在使用Task而不是普通的lambda来运行后台线程时会发生客观的事实差异. JavaFX应用程序.除了我已经提到的差异.
关于Oracel的并发教程,在标题为"为什么使用javafx.concurrent包?"的部分中.它说:
如果您对代码有特殊要求或需要额外的权力,那么通过创建Runnable对象和新线程来实现后台工作程序是一种合适的方法.
除此之外,使用a的所有原因Task同样适用于a Runnable,我看不出有什么特殊要求或额外的力量,我也看不到你输了什么,除了状态和回调,当选择Runnable结束Task.我所看到的是使用Task更冗长:
new Thread(this::doSomething).start();
Run Code Online (Sandbox Code Playgroud)
VS
new Thread(new Task<Void>() {
@Override
protected Void call() throws Exception {
doSomething();
return null;
}
}).start();
Run Code Online (Sandbox Code Playgroud)
我担心的是,根据Oracle选择更简洁的代码版本会产生一些意想不到的副作用,只能在特殊情况下使用.
doSomething在这个例子中有各种不同的活动,我对与他们所做的事情无关的事实感兴趣.在我的例子中,主要是网络请求然后使用更新UI Platoform.runLater.
| 归档时间: |
|
| 查看次数: |
781 次 |
| 最近记录: |