4

を呼び出して、実際にスローされThread.sleepた場合に伝播したい。InterruptException

架空の構文:

Interruptibles.sleep(1000);

これはと同等です

try {
    Thread.sleep(1000);
} catch (InterruptException e) {
    throw Throwables.propagate(e);
}

共通ライブラリ (guava、apache commons など) に同様の機能がありますか。

4

2 に答える 2

9

RuntimeException でラップすると、問題が発生する可能性があります。これは複雑なトピックです。オプションを完全に理解するには、Java Concurrency in Practice の関連セクションを参照することをお勧めします。
Guava には、そこで説明されている標準イディオムの 1 つを実装する sleepUninterruptivelyがあります。

于 2013-01-01T04:06:00.767 に答える
3

あなたはこれを行うことができます。

try {
    Thread.sleep(1000);
} catch (InterruptException e) {
    Thread.currentThread().interrupt();
}

また

try {
    Thread.sleep(1000);
} catch (InterruptException e) {
    Thread.currentThread().stop(e);
}

ただし、通常は、正しく処理できる場所に例外を「バブルアップ」させるのが最善です。IDE で必要なコードを入力することで、これを簡単に行うことができます。

于 2012-12-31T15:25:32.933 に答える