現在、割り込み可能なジョブを実装しようとしています。仕事は大体こんな感じ
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;
}
}
}
}
一部のコントローラーが interrupt() メソッドを呼び出したときに、実行本体の for ループを中断したいと思います。
しかし、私はこれをすべての JobImplementaionClass のすべての for ループに実装したくありません。
私がやりたいのは、実行中のコードと条件をパラメーターとして取得する抽象 Job クラスのメソッドのようなものです。
何かのようなもの
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 ループを使用して、気にせずに中断することができます。
これを実際に実装する方法を知っている人はいますか? これは可能ですか?