• ベストアンサー
※ ChatGPTを利用し、要約された質問です(原文:javaのスレッドの割込みについて)

javaのスレッドの割込みについて

このQ&Aのポイント
  • javaのスレッド割込みに関する初心者の質問です。割込みの発生元でCNTに値を設定し、割込みの受信元でCNTの値を読込み、表示しています。
  • 割込みの発生元でCNTの値の設定と割込みの受信元でのCNTの値の読込みによる競合や処理の停滞について質問しています。
  • コードを参照しながらjavaのスレッドの割込みについての理解を深めたいと思っています。

質問者が選んだベストアンサー

  • ベストアンサー
  • root139
  • ベストアンサー率60% (488/809)
回答No.4

CNT に volatile 修飾子が付いていない場合は誤った値が表示される可能性が有るかと。 マルチスレッド環境下でのフィールドの可視性の問題です。 各スレッドはフィールド値のキャッシュを持つ事が出来るので、synchronized ブロック内か volatile の付いたフィールド以外は、他のスレッドでの書き込まれた最新の値が見える保障はありません。 http://www.ne.jp/asahi/hishidama/home/tech/java/thread.html#h2_volatile http://www.ibm.com/developerworks/jp/java/library/j-jtp06197.html

その他の回答 (3)

noname#247307
noname#247307
回答No.3

>CNTはbaseクラスの中に下記の如く定義されています。 >class base extends Thread{ >public static CNT=0; >} あの、「タイプは何ですか」と訊いたんですが(苦笑)。まぁ、public static int CNT=0; と勝手に判断させてもらいましょう。ならプリミティブタイプですから競合による問題は発生しないはずです。

noname#247307
noname#247307
回答No.2

先に回答されている方が書いている通り、CNTは何なのでしょうか。どこにも宣言文がないのですが。 見たところ、ごく普通のint値であるように思えるのですが、Javaではプリミティブタイプはスレッドセーフなので、intなら競合による問題が発生することはないでしょう。が、CNTがインスタンスなら、そのクラスがどう定義されているかによって違ってきます。例えばイミュータブルなクラスなら問題は発生しないはずですがそうでないなら設計次第で競合による問題は発生する可能性があるでしょう。

bakabon_X
質問者

補足

shylockさま 御免なさい。 CNTはbaseクラスの中に下記の如く定義されています。 class base extends Thread{ public static CNT=0; }

  • y_shimizu
  • ベストアンサー率41% (27/65)
回答No.1

処理の概要がイマイチ掴めません。まずCNTの宣言の記載がないですし、interruptはInterruptedExceptionを必ず発生するものでもないので、CNTを出力したいタイミングがよくわかりません。また、競合とは何を意味していますか?

bakabon_X
質問者

補足

y_shimizu さま 回答有難うございます。 >処理の概要がイマイチ掴めません。 <---//割り込を発生するスレッド以下のコードを参照願います、またはPCでrunすれば ご理解できるのでは無いかと思います。 以上、宜しくお願いします。

関連するQ&A