我已经在java线程上开发了以下程序,我现在有两个线程正在执行并访问run()内部的方法,如果我想先通过线程开始,然后通过同步机制完成第二个线程但是如果我想要第一个线程先结束然后开始第二个线程可以通过join()实现,请告诉我如何通过实现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();
}
答案 0 :(得分:1)
x.start();
x.join();
y.start();
但你应该意识到,根据我上面的评论,这完全没有意义。如果你想要顺序执行,你只需要:
x.run();
y.run();
并且您不需要其中任何一个扩展Thread
。
答案 1 :(得分:0)
如果您希望作业按顺序运行,则无需扩展线程。但是如果你想控制线程执行的顺序,那么你可以尝试为线程设置优先级。
//Setting priorities on the Thread objects
x.setPriority(Thread.MAX_PRIORITY);
y.setPriority(Thread.MIN_PRIORITY);
如果我们在线程上设置优先级,我们仍然没有完全控制执行,但至少我们可以告诉CPU我们认为是哪一个 最重要的
希望这对你有所帮助。