-PR-
解決済み

スレッド動かず

  • すぐに回答を!
  • 質問No.22166
  • 閲覧数30
  • ありがとう数4
  • 気になる数0
  • 回答数4
  • コメント数0

お礼率 22% (4/18)

本の真似をして、スレッドを書いてみたんですがに何も起こりませんでした。全く分かりません。どうすれば良いでしょうか?
public class Frame1 extends Frame implements Runable{
.................
.................
Thread kick = new Thread(this);
int time;

public void start() {
if (kick ==null)
kick.start();
}


public void run() {
while (kick == Thread.currentThread()) {
time++;
String s = Integer.toString(time);
textArea1.append( s + "\r\n");
try{
Thread.sleep(1000);
}catch(InterruptedException e){}
}
}
通報する
  • 回答数4
  • 気になる
    質問をブックマークします。
    マイページでまとめて確認できます。

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

  • 回答No.3

以下のようなサイトを発見しました。
それらと質問のコードを見比べていて気が付いたのですが、
最初に「Thread kick = new Thread(this);」とオブジェクト放り込んでますよね?
だからstart()の中の「kick ==null」に引っかからないのでは?
参考サイトのコードを見ていただければ分かると思うのですが、

Thread kick= null;
とした上で、
public void start() {
if (kick ==null)
kick = new Thread(this);
kick.start();
}
としてみてはいかがでしょうか?
補足コメント
car_toieba_goo

お礼率 22% (4/18)

以下のように書き換えてみたんですが、さっぱり動きません・・・。おかしいですね・・・???。
Thread kick = null;
int time;

public void start() {
if (kick == null){
   kick = new Thread(this);
    kick.start();
}

}

public void run() {
while (true) {
      time++;
     System.out.println(time);
String s = Integer.toString(time);
textArea1.append( s + "\r\n");
try{
Thread.currentThread().sleep(1000);
}catch(InterruptedException e){}
}
}
投稿日時 - 2000-12-26 17:42:59
お礼コメント
car_toieba_goo

お礼率 22% (4/18)

動くようになりました。
どうも ありがとうございました。
投稿日時 - 2000-12-26 21:26:32
-PR-
-PR-

その他の回答 (全3件)

  • 回答No.1

遅い回答ですみません。
もう解決されてしまったかもしれませんが、一応。

何も起こらないとはどういう状態ですか?
エラーは起きていますか?それすら起きませんか?

デバグ方法として、各ポイントにprint文(JavaだとSystem.out.println("文字列");ですか)を入れて、どこが実行されてて、どこがされてないのかを明確にするのをおすすめします。

ちなみに、質問文の中のコードは閉じカッコ(})がひとつ足りないと思うのですが、コピペミスか何かでしょうか?
補足コメント
car_toieba_goo

お礼率 22% (4/18)

}は間違えて消してしまったようです。
エラーは起きてません。実行できました。
textareaに数字が出るはずなのですが、何も出ません。
投稿日時 - 2000-12-26 13:39:57


  • 回答No.2

whileの中が実行されてないのでしょうか…。
whileの中の条件式については値を変えて試験しましたか?
もししていなければ、試しに条件式にtrueか1を入れてみてください。(run()にきたら必ず実行という状態)

私の方も手探り状態ですみません(;n;)
補足コメント
car_toieba_goo

お礼率 22% (4/18)

whileの中をtrue,1 に変えてみましたがうまくいきませんでした。1にしたら実行もできませんでした。whileの中に入れたSystem.out.printlnも実行されないので、while文が実行されていないようです…。
投稿日時 - 2000-12-26 16:02:32
  • 回答No.4
レベル10

ベストアンサー率 28% (42/146)

Javaよく知りませんが・・・
通常Threadの生成ってmainの中でやりませんか?

多分FrameってThreadの継承クラスなんでしょうね、この書き方がと。
このFrame1が生成されても、mainがないとstartしない
んじゃないかなと思うんですが、どうでしょう?
外していたらごめんなさい。
補足コメント
car_toieba_goo

お礼率 22% (4/18)

ある本の例ではこのように書いてありましたのでmainは必要ないと思いました。

class ??? extends Frame implements Runnable{

public ??? (){
・・・・・・
thread.start();
}

public void run() {
スレッドに関する処理
  }

}
投稿日時 - 2000-12-26 19:35:36
お礼コメント
car_toieba_goo

お礼率 22% (4/18)

どうも ありがとうございました
投稿日時 - 2000-12-27 20:03:26
このQ&Aで解決しましたか?
AIエージェント「あい」

こんにちは。AIエージェントの「あい」です。
あなたの悩みに、OKWAVE 3,500万件のQ&Aを分析して最適な回答をご提案します。

関連するQ&A
-PR-
-PR-
こんな書き方もあるよ!この情報は知ってる?あなたの知識を教えて!
このQ&Aにはまだコメントがありません。
あなたの思ったこと、知っていることをここにコメントしてみましょう。

その他の関連するQ&A、テーマをキーワードで探す

キーワードでQ&A、テーマを検索する
-PR-
-PR-
-PR-

特集


専門家があなたの悩みに回答!

-PR-

ピックアップ

-PR-
ページ先頭へ