本の真似をして、スレッドを書いてみたんですがに何も起こりませんでした。全く分かりません。どうすれば良いでしょうか?
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){}
}
}

このQ&Aに関連する最新のQ&A

A 回答 (4件)

以下のようなサイトを発見しました。


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

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

参考URL:http://pascal.seg.kobe-u.ac.jp/~shii/java/exampl …

この回答への補足

以下のように書き換えてみたんですが、さっぱり動きません・・・。おかしいですね・・・???。
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
    • good
    • 0
この回答へのお礼

動くようになりました。
どうも ありがとうございました。

お礼日時:2000/12/26 21:26

Javaよく知りませんが・・・


通常Threadの生成ってmainの中でやりませんか?

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

この回答への補足

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

class ??? extends Frame implements Runnable{

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

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

}

補足日時:2000/12/26 19:35
    • good
    • 0
この回答へのお礼

どうも ありがとうございました

お礼日時:2000/12/27 20:03

whileの中が実行されてないのでしょうか…。


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

私の方も手探り状態ですみません(;n;)

この回答への補足

whileの中をtrue,1 に変えてみましたがうまくいきませんでした。1にしたら実行もできませんでした。whileの中に入れたSystem.out.printlnも実行されないので、while文が実行されていないようです…。

補足日時:2000/12/26 16:02
    • good
    • 0

遅い回答ですみません。


もう解決されてしまったかもしれませんが、一応。

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

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

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

この回答への補足

}は間違えて消してしまったようです。
エラーは起きてません。実行できました。
textareaに数字が出るはずなのですが、何も出ません。

補足日時:2000/12/26 13:39
    • good
    • 0

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Q◆「したらば掲示板」の「掲示板タイトル、スレッドタイトル、レスの文章」のいずれもグーグルで検索されません。

 「したらば」の無料掲示板をレンタルして管理人をしております。
 (余談ですが最近livedoorに買収された掲示板だそうです)

 「したらば」のサイトには下記のような「設定」の説明書きがあります。
---- ----
検索ロボットによるクロールを許可する:
JBBSでは通常、検索エンジンにはひっかかりませんが、
これをONにしておくとひっかかるようになります。

NAVER JAPANからのクロールを許可する:
NAVER JAPANさんからのクロールを許可します。
NAVER JAPANさんの検索エンジンに使われたり、
http://e-biz.naver.co.jp/netview/ のようなものに使われたりします。
---- ----

 「検索ロボットのクロール」は「許可」にしています。
 (ちなみに「NAVER JAPANからのクロールを許可する」などという項目は設定画面にもありませんので、説明書きが古いままなのかなという気もします)
 レンタルを開始したのも、クロールを「許可」に設定したのも、昨年夏頃からです。
 しかし現在でも「グーグル」に全く検索されません。
 なぜでしょうか?

 それから「掲示板」の「ソース表示」をすると、日本語が全て文字化けしています。
 (ちなみに、私のOSはウインドウズXPです)
 私以外の「したらば掲示板」も何件か「ソース表示」してみましたが、どこも私の掲示板と同様に文字化けしています。
 下記は他の「したらば掲示板」の「ソース表示」の一例です。
---- ----
シォソネ、ホイ眥酲セイチ、ォ、鬢ッ、・゜オ睨ヤヒナャニゥ、ア、ニクォ、ィ。
ネ翳スヘラヒセ。「コ・・ヘヘ熙ハ、ノエノヘソヘ、ヒク賚ム、ホハ、マ
---- ----
 これでは検索ロボットがクロールしても、日本語として認識されない気もするのですが、そんな心配は無いのでしょうか?

 「したらば」の無料掲示板をレンタルして管理人をしております。
 (余談ですが最近livedoorに買収された掲示板だそうです)

 「したらば」のサイトには下記のような「設定」の説明書きがあります。
---- ----
検索ロボットによるクロールを許可する:
JBBSでは通常、検索エンジンにはひっかかりませんが、
これをONにしておくとひっかかるようになります。

NAVER JAPANからのクロールを許可する:
NAVER JAPANさんからのクロールを許可します。
NAVER JAPANさんの検索エンジンに...続きを読む

Aベストアンサー

Googleに関しては参考URLをご覧ください。
ページが存在すれば必ずGoogleにキャッチされるというわけではありません。
ましてや掲示板の類だと検索にひっかかるのは難しいと思いますが。

ソースの文字化けは、単にNotepad(メモ帳)で開いたためです。
EUCコードで開けるエディタを入手してください。
なんでもかまいませんが、秀丸エディタやNoEditorなどがあります。
したらば掲示板の掲示板をいくつか参照してみましたが、文字コード情報もソース内に記載されているので、クローラが内容を判読できないというわけではないと思います。

参考URL:http://www.google.co.jp/intl/ja/webmasters/index.html

QInteger.parseInt()について public static void main(String[] args) { int a =

初歩的な質問だと思うのですが、、、

public class TestTree {

public static void main(String[] args) {

int a = Integer.parseInt(args[0]);
int b = Integer.parseInt(args[1]);

GreatTree myTree = new GreatTree(a, b);
myTree.makeTree();
myTree.makeGround();
}

}

というプログラムについて、Integer.parseInt()はどういう意味を持つのかがわかりません。ただ適当につけた名前だとは思えないです。教えてもらえたら幸いです。お願いします。

Aベストアンサー

> argsで入力されたものは例え数字でも文字列として扱われているから、それをintにしている。ということですよね?

引数として (String[] args) と設定されていますので、
おっしゃるとおり 引数 args[]配列に入っているものは、文字列です。

ポイントは、 「String[]」でしょうか。。

Qgmailのスレッド表示について

gmailのスレッド表示、非常に便利で活用しております。
ですが、1点。。。

普通お客様からきたメールにはタイトル[Re:]では
返信しないですよね。
自分の場合、そのようなケースではお客様のメール本文は残しておいて、
タイトルだけは新しくする、という方法を取っております。
が、そうするとスレッドが分かれてしまうようです。
タイトルを替えて返信したいという方も
いらっしゃるのではないのでしょうか。

gmailのスレッドは恐らくタイトルだけでスレッドを判断しているんですよね?
どうにかタイトルを替えて返信したメールも同じスレッドにまとめることは
出来ないのでしょうか?

よろしくお願いします。

Aベストアンサー

Gmail自体が無理だ、と言ってますからねぇ。
ひとつだけ解決方法があるとすれば、Gmailをサーバとして用い、ローカルのメーラにメールをダウンロードする事くらいでしょうか。
この方法なら、表示方式はメーラのシステムに準拠しますから。
ダウンロードしてもGmailのメールはサーバにアーカイブされますから、メーラはメールの表示クライアントとして割り切り、用事が済んだら削除する、辺りでいかがでしょうか。
あるいは、スレッド表示が無理なら、フィルタ機能で自動ラベリングするという手も考えられるかと。

Qclass Test_A {  main(){}}の実行順序は?

public class Test_A {
public static void main(){

int a = 0;
int b = 1;

}
}
例えば上のようなサンプルで何故 main()がクラスTest_A の中に挟まっているのでしょうか?実行順序としては main()が終了したら、クラスTest_A の方はどうなるのでしょうか? main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。よろしくお願いします。 

Aベストアンサー

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時には、Test_Aクラスのインスタンスは生成されません。
質問のコードでは変数a,bに値が代入され、それで終わりです。

Javaでは、(正確にはJavaVMは)実行するclassファイルにある、
String[]引数を持ったvoid mainメソッドを実行する仕様になっています。
しかし、mainメソッドを実行するときには何のインスタンスも生成されていないので、
何かのインスタンスのメソッドを実行することはできません。
なので、staticなメソッドでないとJavaVMが実行できないのです。
さらに、JavaVMからアクセス可能なスコープを与える必要があるので、
publicである必要もあるのです。

あとは、そのmainメソッドに指定されたコードを実行し、mainメソッドの最後まで処理が進んだら
そこでJavaVMが終了し、プログラムも終了します。

※細かい話ですが、main()からプログラムは始まりません。
正確に言うと、引数なしのmain()メソッドは他のメソッドと何ら代わりがありません。
プログラムを始めるには、
アクセススコープがpublicで、staticな戻り値のなく、引数にString配列を取るmainメソッド
であることが必要です。つまり、
public static void main(String[] args)
とするのが通常です。
試しに質問のコードをjavaコマンドで実行すると、NoClassDefFoundErrorが出るはずです。

>main()がクラスTest_A の中に挟まっているのでしょうか

Javaは、全てのプロパティ、メソッドはどこかのクラスに属していないといけないからです。
mainメソッドであっても例外ではありません。

>main()からプログラムが始まるのは分かるのですが、その後の動作が分かりません。

これを考える上で最も重要なのはmainメソッドがstaticであることです。
staticなメソッドは、そのクラスのインスタンスを作らなくても、
つまり、new Test_A();としなくても実行することが可能です。
プログラム実行時...続きを読む

QGmailでスレッドを無視して受信順に閲覧する方法

現在Yahooメールを使っていますが運用上の不都合が出てきたので他所に変えようと思い、いくつか試した中でGoogleの「Gmail」が気に入りました。
目障りな広告も無いし、すっきりしたインターフェイスは好感が持て、送受信の使用感も良いです。振り分けの概念の違いも慣れれば問題なさそうです。

ただ、あの特有の「スレッド表示」がネックなのです。

スレッドにすると逆に話のつながりがよく分からなくなってしまうことがあります。
例えば仲間内でメーリングリストのようなやり取りをする場合、返信だったり新規だったりするのに話は順番に続いてるということがよくあります。
今いくつか登録しているMLは、何処もタイトルはあって無いようなもので順番に読んでいく事を前提に皆が投稿します。するとGmailでは、話は一本のラインにもかかわらずあちこちのスレッドに分散されてしまい、順番に読むのが非常に困難になります。
またMLに限らず、つながりを無視して受信順を重視することがよくあります。しかしGmailはスレッド表示しかできない仕様のようで、受信順に並べて表示という選択肢がありません。

そこで質問です。Gmailでタイトルに関係なく受信順に読みたい場合、どのような方法が考えられますか?
(ローカルにはデータは取り込まない、また他のWEBメールも使用せず「あくまでGmailで」という前提でお願いします。)


※OSはvistaです。回答は急いでないので困り度は黄色にしてますが、実際は「かなり困ってます」です。

現在Yahooメールを使っていますが運用上の不都合が出てきたので他所に変えようと思い、いくつか試した中でGoogleの「Gmail」が気に入りました。
目障りな広告も無いし、すっきりしたインターフェイスは好感が持て、送受信の使用感も良いです。振り分けの概念の違いも慣れれば問題なさそうです。

ただ、あの特有の「スレッド表示」がネックなのです。

スレッドにすると逆に話のつながりがよく分からなくなってしまうことがあります。
例えば仲間内でメーリングリストのようなやり取りをする場合、返信だっ...続きを読む

Aベストアンサー

ヘルプにありますよ
http://mail.google.com/support/bin/answer.py?answer=47787&query=%E3%82%B9%E3%83%AC%E3%83%83%E3%83%89&topic=&type=f

Q"try{}catch(){}"文で"close()"はどのように書けばよいのでしょうか。

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プログラム1
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
out.close();
} catch (IOException e) {
e.printStackTrace();
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


●プログラム2
public class Main {
public static void saveMemento(Memento memento) {
try {
ObjectOutput out = new ObjectOutputStream(new FileOutputStream("game.dat"));
out.writeObject(memento);
} catch (IOException e) {
e.printStackTrace();
} finally {
if (out != null) {
try {
out.close();
} catch (IOException ex) {
ex.printStackTrace();
}
}
}
}
… //以下略
}

public class Memento implements Serializable {
… //以下略
}


なお、私の環境は以下の通りです。
OS: Microsoft Windows XP Professional SP2
開発環境:Eclipse 3.2.2
java: java version "1.4.2_13"

こんにちは、片岡と言います。

プログラム1は、Java言語で学ぶデザインパターン入門(結城浩さん著)の
433ページを参考にして書きました。

私は、プログラム1のclose()の書き方よりもプログラム2のようなclose()の書き方が、
良いと思っています。
なぜならば、プログラム1では、out.writeObject(memento)行の例外によって、
close()が実行されないからです。

私のこの考え方は正しいのでしょうか。
もっと良いclose()の書き方はあるのでしょうか。
ご存知の方はいらっしゃいませんか。

●プロ...続きを読む

Aベストアンサー

>私のこの考え方は正しいのでしょうか。
正しいです。質問者さんが書かれているやり方が一般的です。
念のため書いておきますが、outをtryの外で宣言しないとコンパイルが通りません。

まぁ、あくまでデザインパターンを学ぶための本ですから、細かなコーディングについて気にする必要はないでしょう(疑問を持つことは良いことですが)。

Q2チャンネルは「1つスレッド」で複数のURLを持っていることあるんですか?

このカテゴリーでよろしいんでしょうか。

2チャンネルの[あるタイトルのスレッド]というのは同じ

内容で(書き込み+レスな

ど全く同じで)複数のURLを持っていることってあるん

ですか?

教えてください。

要領の悪いご質問ですみません。

Aベストアンサー

もし、発言数が 50 以下であれば、「全部」と「最新50」が同じ内容で違うURLに。
もし 100以下であれば、加えて「1-」が、そうなるでしょうね。

# 違う URL っていっても、末尾がちょっと違うだけですが

QJavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?

JavaScriptで【window.google={kHL:"ja"};】という記述はどういう意味?


YOUTUBE日本語版
http://jp.youtube.com/
のHTMLソースを見ていたら、



<script type="text/javascript">
    window.google={kHL:"ja"};
</script>


という記述を目にしたのですがこれはどういう意味あいというか目的のものなのでしょうか?


教えていただければ幸いです。

Aベストアンサー

これは、window.googleに'kHL'というキー(値は'ja')を持つ連想配列を
作成しています。

JavaScriptでの連想配列は

var 変数名 = {
キー : '値',
キー : '値',
:,
キー : '値'
};

というような感じで作成します。
キーはダブルクォートまたはシングルクォートで囲まなくても
いいようです。

参考URL:http://javascriptist.net/docs/basic_hash.html,http://www.openspc2.org/JavaScript/kouza2007/array/hash/index.html

Q【MFC】ユーザインタフェーススレッドのInitInstanceの呼ばれるタイミングについて

現在、MFCのスレッドについて学習をしている者です。

タイトルの件なのですが、CWinThread の派生クラス内の
InitInstanceが呼ばれるタイミングはいつなのでしょうか?
AfxBeginThreadで生成した時すぐでしょうか?

ご教示宜しく御願いいたします。

Aベストアンサー

AfxBeginThreadで生成した時すぐであっていますが、引数でCREATE_SUSPENDEDを指定をしていない時限定になります。
引数でCREATE_SUSPENDEDを指定した場合は、その後ResumeThreadを呼び出した時になります。

また、AfxBeginThreadの代わりにCreateThreadを使った場合も同様の動作になります。

QA a = new A(){}; の構文の意味が分からない。

下記サイトのコードを読んでいて、

ResponseListener listener = new ResponseListener() {
//略
};

という書き方があったのですが、どういう意味になるのでしょうか?
インスタンスの作り方は単に

A a = new A();

だと思うのですが…。

http://www.snmp4j.org/doc/org/snmp4j/Snmp.html

Aベストアンサー

無名クラスと呼ばれるものよ。
私も良くやるわ。

ちなみに
A a = new A();
はできないわよ。
Aはインターフェースだからね。


上記の場合、正式に実装するなら、
ResponseListenerをimplementsした
MyResponseListener(仮名)を別途作成し、
それを
ResponseListener listener = new MyResponseListener();
とする必要があるわ。
でも、このMyResponseListenerは
今ここでしか使わない、他からまったく参照する必要のない
超ローカルなクラスなのよ。
このメソッドが終了すればGCにかけてもいいわけ。
そんな場合、わざわざクラスを1つ作る必要なくて
その場でちょちょいとやってしまうことができるのよ。
それが無名クラスっていう実装方法よ。

http://www.javaroad.jp/java_class15.htm

FileFilterやCompare、Runnableなんかで
他のクラスで再利用しないときは良くやるわ。

無名クラスと呼ばれるものよ。
私も良くやるわ。

ちなみに
A a = new A();
はできないわよ。
Aはインターフェースだからね。


上記の場合、正式に実装するなら、
ResponseListenerをimplementsした
MyResponseListener(仮名)を別途作成し、
それを
ResponseListener listener = new MyResponseListener();
とする必要があるわ。
でも、このMyResponseListenerは
今ここでしか使わない、他からまったく参照する必要のない
超ローカルなクラスなのよ。
このメソッドが終了すればGCにかけても...続きを読む


人気Q&Aランキング

おすすめ情報