Javaに関する様々な情報をご紹介します。

Javaに関する様々な情報をご紹介します。
評価

0

thread の使い方

2秒まってからHELLO WORLD と表示するように、runメソッドをオーバーライドしたのをtereadクラスを継承して作成し、
クラスのインスタンスを3つ作成して1つのスレッドが終了したあとに、次のスレッドを開始させるmainメソッドを作りたいのですが。
THREADでの1つづつ2秒間隔で表示さしていく方法がわかりません。初心者の質問で申し訳ありませんが、教えてください。

13

回答

5347

閲覧

13件の回答

評価

0

なんだか日本語として、通じないところがありますが…。
一定時間待つのは、Thread#sleep()を使います。
mainメソッドで待つのは、Thread#join()で良いでしょう。

評価

0

返事ありがとうございます。
すいませんが、2秒間隔で1つづつ3つだす方法はどうやるのでしょうか?

評価

0

1つだす
2秒まつ
1つだす
2秒まつ
1つだす

評価

0

それをJAVAのプログラムでするにはどうやるのでしょうか?

評価

0

System.out.println( "HELLO WORLD" );
Thread.sleep( 2000 );
System.out.println( "HELLO WORLD" );
Thread.sleep( 2000 );
System.out.println( "HELLO WORLD" );

評価

0

あのー、回答したメソッドについて、少しは調べてみたんでしょうか。

評価

0

すいません、継承してやりたいのでこちらの方法がいいのですが、2回目以降の2秒待ちの方法がわかりません。
どう改造すればいいでしょうか?アドバイスお願いします。

public class Problem extends Thread{
    public void run(){
        try{
            sleep(2000);
        }catch(InterruptedException e){}
        System.out.println("Hello WORLD");
    }
    
    public static void main(String args[]){
        Problem t1=new Problem();
        Problem t2=new Problem();
        Problem t3=new Problem();
        t1.start();
        t2.start();
        t3.start();
    }
}

これを使うのですかねー。考えてみましたが、初心者のためやり方がわかりませんのでお願いします。
public final void join()throws INterruptedException;

評価

0

知識もないのに、考えても答えは出てこないでしょう。
joinなんて、検索すればいくらでも出てくるはずです。
「初心者のため」というのは、免罪符ではありません。

sleep()はstaticなメソッドです。
某師さんが書かれているコードにあるように、staticにアクセスしてください。

評価

0

回答するのは以下の理由により難しいです。

1.最終的に何をしたいのか読み取れない
2.giruthy さんがどの程度Javaを理解し、スレッドを理解しているか読み取れない

特に1.が致命的です。

あえてアドバイスするなら、

>考えてみましたが、初心者のためやり方がわかりませんので
>お願いします。

まだ考えて解決できるレベルでは無いようです。
このサイトや他のサイトでスレッドの解説を読んだり、サンプルを動かしたりして理解してから質問した方が良いと思います。

もし、
「読んだのですが良く判らないので誰でも良いですから初心者でも判る解説をして下さい」
「こちらの望む事を読み取ってソースを提示して下さい」
等と言うのでしたら、改めて別な回答を差し上げます。

評価

0

ここのサイトでスレッドの所見ましたが、動かすことができませんでした。
t1のスレッドを2秒後に開始さして、t1のスレッドが終了してから、t2のスレッド開始・・・と実行させるようにしたいのですが。処理待ちなどの仕方が考えてもわかりませんでしたので、上のソースをどのように変更すればいいのか、教えてください。。

評価

0

ここのサイトでスレッドの所見たのなら、最後まで動かしましょう。
エラーとか書いて質問すれば答えてもらえるかも知れませんよ。

また、t1のスレッドを2秒後に開始さして、それが終了してから、t2のスレッド開始・・・なら、スレッドである必要がありません。

上のソースを変更しようと思ったら、ほとんど別なソースになるかも知れませんので、私は回答を辞退します。
他の人が答えてくれると良いですね!

評価

0

ここのサイトだけで分からないなら、他のサイトも当たりましょう。
知識を得るのに、1つのサイトだけで十分だとは、思わないことです。

Exceptionを考えなければ、2005-12-21 00:02:48のソースに2行つけたすような感じになると思います。
もう少し、他のサイトも参考にして、自分なりに試行錯誤してみませんか。
join()がどのようなもので、どのように使うものなのか調べて、自分なりに組み込んで、
それでもなお動かなかったら、そのソースを再度載せてみてください。

さて、某師さんの書かれているとおり、これをスレッドで実現する意味は、全くありません。
スレッドというのは、同時に実行したいから使うものです(100%そうとは言い切れませんが、基本的に)。

評価

0

やっと基本的なところが理解できました。
わかりました、ありがとうございました。

質問から6ヶ月以上経過しているので、回答を書き込むことはできません。