1

Runnableオブジェクトを指定します。

public class Test implements Runnable {

    @Override
    public void run() {

        int x = 2;
        int y = 6;
        // Snip more code
        int w = x - 1;
        int z = x * y;          

    }

}

正確な数の操作を実行できるようにしたいです。

Test t = new Test();
Executor.execute(t, 100); // Arbitrary unit of operations

そのため、初めてこの実行を行うと、次のようになります。

int w = x - 1;

それ以外の場合、同じパラメーターを使用してメソッドを呼び出すと、同じポイントまで実行されます。

私は周りを見回しましたが、適切なものが見つかりません(たとえば、ScheduledThreadPoolExecutorは私が知る限り機能しません)。

これを機能させるには、バイトコードレベルに移動する必要がありますか?私が読んだことから、JITはここでも問題を引き起こす可能性があります。

4

2 に答える 2

2

次のように、操作をコマンドオブジェクトでラップできます。

public interface Operation {       
   int executeOp(int prevResult);
}

ランナブルはこれらのオブジェクトのリストを保持し、それらの最初の100個だけを呼び出します。

于 2012-03-30T16:15:50.777 に答える
1

すべての操作の後にタイムアウトをチェックするようにバイトコードを挿入できます。これにより、100倍以上遅くなる可能性がありますが、決定論的です。

より実用的なアプローチは、Runnableにコードを追加することにより、選択の開始時にタイムアウトをチェックすることです。

于 2012-03-30T16:14:07.550 に答える