Java的轻量级长时间运行方法取消模式

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类,将步骤细分为任务对象,创建一个队列,然后在循环中逐步执行取消检查,但我只是想知道是否存在任何简单的代码结构模式.

Luk*_*der 4

我不知道有这样的机制。由于您必须跟踪您的工作才能执行rollbackWork(),因此如果您想进一步发展这种逻辑,那么设计良好的面向对象解决方案无论如何都是您的最佳选择!通常,这样的场景可以使用命令模式来实现,我仍然认为它非常轻量级:

// Task or Command
public interface Command {
    void redo();
    void undo();
}
Run Code Online (Sandbox Code Playgroud)

然后,调度程序或队列可以负责执行此类任务/命令实现,并按顺序回滚它们。