-1

我已经在java线程上开发了下面的程序,我有两个线程正在执行并访问run()中的方法,如果我想第一个线程首先开始,然后是我通过同步机制完成的第二个线程但是如果我想要第一个线程首先结束,然后从可以通过 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 回答