Pio*_*ler 5 java concurrency multithreading
是否有一个轻量级模式来取消长期运行方法,取而代之的是这样的代码:
public void longComputations() {
... first step...
if ( cancelled ) {
rollbackWork();
return;
}
... second step...
if ( cancelled ) {
rollbackWork();
return;
}
... third step...
if ( cancelled ) {
rollbackWork();
return;
}
}
Run Code Online (Sandbox Code Playgroud)
我知道我可以创建一个Task类,将步骤细分为任务对象,创建一个队列,然后在循环中逐步执行取消检查,但我只是想知道是否存在任何简单的代码结构模式.
我不知道有这样的机制。由于您必须跟踪您的工作才能执行rollbackWork(),因此如果您想进一步发展这种逻辑,那么设计良好的面向对象解决方案无论如何都是您的最佳选择!通常,这样的场景可以使用命令模式来实现,我仍然认为它非常轻量级:
// Task or Command
public interface Command {
void redo();
void undo();
}
Run Code Online (Sandbox Code Playgroud)
然后,调度程序或队列可以负责执行此类任务/命令实现,并按顺序回滚它们。
| 归档时间: |
|
| 查看次数: |
565 次 |
| 最近记录: |