3

特定のイベントが発生するまで無期限にループするスレッドを開始しています。問題は、このスレッドを開始してから、プログラムの通常の実行に戻りたいということです。ただし、スレッドを開始した後、コードが動かなくなったようです。

コード:

public void init()
{
   Runnable thread = new Runnable()
   {
     public void run()
     {
        while(something)
        {
           //do something
        }
     }        
   };
   System.out.println("Starting thread..");
   new Thread(thread).run();
   System.out.println("Returning");
   return;
}

run()これを開始すると、「開始スレッド」という出力が得られますが、停止中のwhileループの条件が真になるまで「戻る」ことはありません。

非同期で動作させる方法はありますか?

4

4 に答える 4

13

を開始するのstartではなく使用します。後者はメソッドを同期的に呼び出すだけですrunThreadrun

new Thread(thread).start();

読む:スレッドの定義と開始

于 2013-09-17T16:52:24.040 に答える
1

あなたのコードでこれを試すことができます:-

new Thread(thread).start();

お気に入り:-

public void init()
{
   Runnable thread = new Runnable()
   {
     public void run()
     {
        while(something)
        {
           //do something
        }
     }        
   };
   System.out.println("Starting thread..");
   new Thread(thread).start();    //use start() instead of run()
   System.out.println("Returning");
   return;
}
于 2013-09-17T16:53:02.867 に答える
1

new Thread(thread).start()の代わりに呼び出したいrun()

于 2013-09-17T16:53:17.680 に答える