1

インターフェイスを実装するクラスをモードにしていRunnableます。

ここで、ブール値に従って、プログラムでそのクラスをマルチスレッドまたは非マルチスレッド (シーケンシャル) で開始したいと考えています。

どうすればそれを行うことができますか?これは私の現在のコードです:

Constructor<?> constructor = processorClass.getConstructor(constructorParameterTypes);
Processor<T> process = (Processor<T>)constructor.newInstance(constructorParameters);
RunnableProcessor<T> runnableProcessor = new RunnableProcessor<>(process, object);
if (multiThreaded) {
    new Thread(runnableProcessor).start();
}
else {
    //what to do here?
}

明確にするために、スレッドを作成せずにrun()からメソッドを呼び出したいと思います。runnableProcessorただし、直接呼び出すことは推奨されていないと思うrun()ので、より良い解決策を探しています。

よろしく。

4

6 に答える 6

5

非推奨runnableProcessor.run();ではないを呼び出すだけです (Runnableメソッドは 1 つしかrunないため、クラス全体が非推奨にならなければ非推奨にはなりません)。

于 2013-07-30T09:12:50.587 に答える
1

ドキュメントによると、は非推奨ではありません。型が関係する場合、通常は new を開始したいため、 new を開始run()するときによくある間違いです。ThreadRunnableThread

ドキュメントからわかるように、非推奨のタグはありません。

于 2013-07-30T09:13:21.490 に答える
1

最も簡単な方法は次のとおりです。

  1. クラスを別のスレッドで実行する場合は、startメソッドを呼び出します
  2. クラスを別のスレッドで実行したくない場合は、runメソッドを呼び出します。run を呼び出すと、同じスレッドで順次実行されます。
于 2013-07-30T09:13:48.740 に答える