-1

私はJavaスレッドで以下のプログラムを開発しました。最初のスレッドを最初に開始し、次に同期メカニズムを介して実行した2番目のスレッドを開始したい場合、run()内のメソッドを実行してアクセスしている2つのスレッドがありますが、必要な場合最初のスレッドが最初に終了し、次に join() を介して達成可能な 2 番目のスレッドで開始されました。join を実装することでこれを行う方法を教えてください。

public class MyThread2 extends Thread  {


public  void  run()
{

    //synchronized (this)
    //{
    //System.out.println(Thread.class);
    for(int i=0;i<20;i++)
    {
        try{

            Thread.sleep(500);
            System.out.println(Thread.currentThread().getName());
        System.out.println(i +"\n"+ "..");
        }catch(Exception e)
        {e.printStackTrace();
        }
    }
    //}

}

public static void main(String... a )
{
    MyThread2 obj = new MyThread2();

    Thread x = new Thread(obj);
    x.setName("first");
    x.start();

    Thread y = new Thread(obj);
    y.setName("second");
    y.start();




}
4

2 に答える 2

1
x.start();
x.join();
y.start();

しかし、上記の私のコメントによると、これは完全に無意味であることを理解する必要があります。シーケンシャル実行が必要な場合は、次のものが必要です。

x.run();
y.run();

どちらも拡張する必要はありませんThread

于 2012-04-17T05:59:41.730 に答える
0

ジョブを順次実行する場合は、スレッドを拡張する必要はありません。ただし、スレッドが実行される順序を制御したい場合は、スレッドに優先順位を設定してみてください。

//Setting priorities on the Thread objects
    x.setPriority(Thread.MAX_PRIORITY);
    y.setPriority(Thread.MIN_PRIORITY);

スレッドに優先度を設定しても、実行を正確に制御することはできませんが、少なくとも、最も重要と思われるスレッドを CPU に伝えることができます。

これがお役に立てば幸いです。

于 2012-04-17T06:06:12.723 に答える