1

ここでSOに関するいくつかの既存の回答を調べ、FutureをExecutorServiceと組み合わせて使用​​して、 TimeUnitをメソッドにタイムアウトを設定しました。

しかし、サービス実装内のメソッドにタイムアウトを設定しようとしています。これは、呼び出し元のクラスがインターフェイスを消費していることを意味します。

したがって、このメソッドを同じスレッドで実行したいので、サービスの実装にcallableを実装することは避けたいと思います。

特定のメソッドでタイムアウトを設定したり、タイムアウトをシミュレートしたりする他の方法はありますか?

4

1 に答える 1

1

どのクラスでも受講でき、期間限定のプロキシを作成できるguavaをご覧TimeLimiter。ただし、それでも内部でスレッドプールを使用して待機します(少なくともデフォルトの実装)。FutureSimpleTimeLimiter

同じスレッドでメソッドを実行したいのですが、タイムアウト後に割り込みをかけるには別のスレッドが必要です。また、中断が常に機能するとは限りません。したがって、スレッドプールとFutureが唯一の方法です。

于 2012-10-03T21:43:08.723 に答える