0

Executor最初ににキャストせずに Java でをシャットダウンする方法はありExecutorServiceますか? 基本的に私はそれと呼ばれるクラスを持ってExximplements Executorます。Exxをシャットダウンしたい。どうすればいいですか?本質的に、私はをシャットダウンする方法を知る必要がありExecutorます.

編集: 例:

class Exx implements Executor{
    @Override
    public void execute(Runnable r) {
        new Thread(r).start();
    }       
}
4

1 に答える 1

3

特定のExecutorインターフェイスの性質上、シャットダウンする必要があるものではありません。たとえば、これは の最も基本的な実装ですExecutor

class NearlyPointlessExecutor implements Executor {
    public void execute(Runnable r) {
        r.run();
    }
}

上記のコードでは明らかに、何かをシャットダウンする必要があるほど複雑なことは何もありませんが、提供されたクラスはExecutorインターフェイスに完全に準拠しています。

実装をシャットダウンする必要がある場合は、独自のインターフェイスを作成するか、ExecutorService.

質問編集の更新:

提供されたコードの場合、スレッドへの参照がコレクションに保持されていないため、作成中のスレッドをシャットダウンすることはできません。

ただし、解決策があります。提供される実装は、Executors.newCachedThreadPoolを使用して提供されるものと本質的に同じです。独自の実装を破棄し、代わりにこれを使用してください。

于 2012-07-25T17:42:48.720 に答える