• ベストアンサー

Thread.sleepのInterruptedExceptionはどんなときに呼び出されますか?

jyugemu55の回答

  • ベストアンサー
  • jyugemu55
  • ベストアンサー率68% (11/16)
回答No.1

sleepしているスレッドに対して、interrupt()メソッドを呼び出すと発生します。 たとえば以下のような感じ class TestThread extends Thread {  /**   * 10秒スリープして終了するだけのスレッド   */  public void run() {   try {    // 10秒スリープ    Thread.sleep(10000);   } catch(Exception e) {    e.printStackTrace();   }  } } class Test {  public static void main(String[] args) {   try {    // TestThread を走らせる    TestThread thread = new TestThread();    thread.start();    // 1秒待つ    Thread.sleep(1000);    // TestThreadに割り込む    thread.interrupt();   } catch(Exception e) {    e.printStackTrace();   }  } } コンパイルもしていませんので動くかどうかわかりませんけど、イメージは伝わるのではないでしょうか。

関連するQ&A

  • C++ Thread::Sleep()について

    RunTimer = gcnew Timer(); RunTimer->Interval = 50; RunTimer->Tick += gcnew EventHandler(this, &RunTick); RunTimer->Enabled = true; ・・・処理・・・ RunTimer->Enabled = false; System::Threading::Thread::Sleep(1000); としているのですが、数コマ動いてしまいます。 処理は3枚の画像を差し替えて動かしているのですが、即座にスリープがかからず、 画像が少し歪んでしまいます。 ソースが長く、どこを記載すれば良いのか解らず、かなり抜粋しましたが、 TimerのTickで画像を入れ替えて、歩いている様にみせかけています。 一時停止後、改めて処理を始めようと思っているのですが、 なぜだか、少し動いてしまします。 Sleepを削除すると、うまく止まるのですが、即座に次の処理に移行してしまう為、数秒停止させたいと考えています。 System::Threading::Thread::Sleep(1000); だけでは、即座に止める事はできないものでしょうか? また、TimerのTickを数秒止める事はできるものでしょうか? ご存じの方、アドバイスよろしくお願いいたします。

  • Thread.sleep()はすべてのスレッドを停止する?

    Threadを継承したCarというインスタンスを5つ作ってstart()させたとします。 そのあと、クラスメソッドのThread.sleep(1000)をすると、すべてのThreadインスタンスが1秒止まるのかと思ったのですが、そうではないといわれました。 クラスメソッドのThread.sleep()は何をsleepさせるのでしょうか?

    • ベストアンサー
    • Java
  • java Threadのsleepを途中で止める方

    今、訓練校に通っていて課題をだされていますが、どうもうまく行きませんのでお知恵を拝借したく思います。  java Threadのsleepを使用し、クイズの回答を10秒以内で答えるというものですが、 途中で入力をすると、次の問題の回答時間が異様に早くなり1秒ではなくなってしまいます。  こういう場合、入力をすれば、runメソッドが終わるというプログラムはどうやって書けばいいのか教えて頂きたく思います。 どうぞよろしくお願いいたします。 <下記、threadの部分だけですが、パッケージを使用するという課題のため無理やり使っています。> package pa; public class CountTest extends Thread { public void start() { super.start(); } public void run() { for (int i=10; i >= 1; i--) { try{ sleep(1000); System.out.print("⇒" ); }catch(InterruptedException e){} } System.out.println(""); for (int i=1; i >= 1; i--) { / } System.out.println("Time up "); System.out.println(""); System.out.println("1-4で答えを記入してください"); }

    • ベストアンサー
    • Java
  • Thread とか Sleep とかについて質問です。   Javaで

    Thread とか Sleep とかについて質問です。   Javaでトランプゲームを作ってます。例えば、コンピュータの番で5枚のトランプをめくる間隔を1枚0.5秒くらい間隔でやらせる為には、Thread.sleep(500); を使えばいいんでしょうか? 普通にやると当然一瞬でめくってしまう為、時間かせぎをしたいのです。VB系をやってた時は、コードの中にSleep(500)を好きな場所に入れれば、簡単に出来てたのですが。Javaでは上手くいかなくて・・・。よろしくお願いします。 (オセロで1枚1枚ひっくり返す時とかもめくる間隔を空けたいです)

    • ベストアンサー
    • Java
  • Thread.sleep()について(休止の対象は)。

    こんにちは。 Javaで、 Thread.sleep(duration);と書いた場合、 停止の対象となるスレッドは どうなるのでしょうか。 もし、sleep()がインスタンスから、 呼び出せるなら、thread(インスタンス).sllep() と書くことで、そのインスタンス(スレッドを 継承したクラス)を休止するので、 分かりやすいのですが、Thread.sleep()と 書くので、わかりずらいです。 以下のような、書き方に戸惑っています。 public class xx{ public static void main(String args){ while(1){ Thread.sleep(1000); System.out.println("abc"); } } } これは、 メインスレッドを対象としている、 と考えていいのでしょうか。 スレッドを継承したクラスで、 Thread.sleep()と書いたときは、 そのクラスを休止させる、 という理解で、いいのでしょうか。 何かアドバイスできる人がいましたら、 よろしくお願いします。

    • ベストアンサー
    • Java
  • java applet と java web start の違い

    う~ん、ワカラン

  • Threading.Thread.Sleep()の前後の処理

    初めて質問します。(VB2008始めたばかりの初心者です) 昔のBASICでwaitやdelay、sleepなどといったプログラムの実行を一時止めることの出来るコマンドがあったと思いますが、 VB2008上で同じようなことさせてラベルの色を一定時間で変化させたいと思い、色々調べて Threading.Thread.Sleep()  というものを見つけました。実際使ってみるとThreading.Thread.Sleep()の前に書いた処理がうまく動作しません。 (下記のような簡単なコードですが) Private Sub Buttonstart_Click(ByVal sender As System.Object,_ ByVal e As System.EventArgs) Handles Buttonstart.Click    Label1.BackColor = Color.White     Threading.Thread.Sleep(2000)     Label1.BackColor = Color.Blue End Sub スタートボタンを押せばlabel1が白色になり2秒後に青にしたいのですが白色にならずに2秒後にいきなり青になってしまいます。 とても初歩的な間違いをしていると思うのですが解決できません。恥ずかしいと思いながらも質問させていただきます。アドバイスをお願いします。

  • 「鋼の錬金術師」の最終回

    ハガレンの最終回で生き残っていた二人のホムンクルスはどうなったのでしょうか? 1・グラトニーは消されたのか?それともライラを食っちゃったのか? 2.もう一人(名前ワカラン)は「扉のむこう」へ行ってどうなったのか?

  • スレッドについてお教えください。

    スレッドについてお教えください。 今、画面のプログラムより、帳票を出力しています。 帳票の出力に時間がかかるため画面のプログラムとは非同期に 別スレッドにして帳票を出力しようと考えたのですがこの場合 一つの帳票の処理中に同じ要求が複数来た場合、スレッドは 複数立ちあがってしまい帳票の順番が狂ってしまうものと 思います。 これを要求はキューしていくが、処理は順次行う(1処理終了後に 次の要求を処理する)ということは可能なのでしょうか? お願いいたします。

  • スレッド

    問題集を読んでいて、どうしても意味がわからなかった部分があります。五択になっていて、私は 「notify()実行の条件は、呼び出し元のスレッドが待機状態にあるスレッドのロックフラグを取得していることである」 を選んだんですが、これは間違いでした。 解説には待機スレッドのロックフラグは必要ではない、とあるのですが、では逆に言うとなんの(何処の)ロックフラグが必要になるのでしょうか? ご存知の方がいらっしゃいましたら、教えて下さい。 宜しくお願い致します。

    • ベストアンサー
    • Java