我目前正在尝试实现可中断的作业。工作一般看起来像这样
public abstract class Job
{
private boolean interruptFlag;
public boolean isinterrupted()
{
return interruptFlag;
}
public void interrupt()
{
interruptFlag = true;
}
public abstract void execute();
}
public class JobImplementation extends Job
{
public void execute
{
for (int i = 0; i < 10; i++)
{
doSomethingWithI(i);
if (interruptedFlag())
{
break;
}
}
}
}
当某些控制器调用中断()方法时,我想中断执行主体中的 for 循环。
但我不想在每个 JobImplementaionClass 的每个 for 循环中实现这一点。
我想做的是类似于抽象作业类中的一个方法,它获取执行代码和条件作为参数。
就像是
protected void doFor(conditionCode, executionCode)
{
for (conditionCode)
{
executeCode();
if (isInterrupted())
break;
}
}
并且 JobImplementation 类不会使用正常的 for 循环,但是:
public void execute()
{
doFor({int i = 0; i < 10; i++}, {doSomethingWithI(i)})
}
通过这种方式,我尝试从实际的 JobImplementation 中隐藏控制细节。当我编写一个新的 JobImplementation 时,我可以使用这个 doFor 循环并且有可能中断而不必关心它。
有谁知道如何实际实现这一点?这可能吗?