私が知っているThread.sleep()は、特定のミリ秒や特定のナノ秒のようにしばらくの間、Javaスレッドを一時停止させることができます。しかし、問題は、この関数の呼び出しもオーバーヘッドを引き起こすことです。100ナノ秒のような短い時間Javaスレッドを中断する方法はありますか?
たとえば、スレッドを100ナノ秒間サスペンドしたい場合は、Thread.sleep(0、100)を呼び出します。このプロセスの全コストはinvocation_cost + 100ナノ秒であり、これは私が望むよりもはるかに大きいかもしれません。どうすればこの問題を回避し、目的を達成できますか?
私がこれを必要とする理由は、私がオフラインでシミュレーションをしたいということです。私はタスクの実行時間をプロファイリングしました。今度は、同じ期間にスレッドを中断することによって、この実行時間をシミュレートしたいと思います。
ありがとうございます!
これを行う理由は何ですか?もしそうなら、それは別の方法で解決されるかもしれません... –
これは珍しい要件です。あなたは[バックオフ戦略](http://en.wikipedia.org/wiki/Exponential_backoff)などが必要なようです。 – Bohemian
@gt FYI、stackoverflowに関する質問を投稿するのは迷惑で、答えを提供するのではなく、あなたに質問する回答があります。何年もの間プロジェクトで発生してきたこのようなことを望んでいる多くの正当な理由があります。実用的な理由の1つは、ハードウェアからのオーディオを記録するアプリケーションでリアルタイム動作を維持することです。ハードウェアが不整合に動作する可能性があるか、テスト目的でハードウェアの動作をシミュレートすることがあります。 – EntangledLoops