[英]Java Thread Join method
Join方法如何在Thread中工作。 如果在run方法中写入join方法,那么它将陷入僵局。 只需要知道为什么会发生。
代码片段:
public class ThreadSchuduling extends Thread{
static ThreadSchuduling threadObj3;
public ThreadSchuduling(){
System.out.println("Default Constructor");
}
public ThreadSchuduling(String name){
System.out.println("Parameter Constructor");
}
public void run(){
try{
threadObj3.join();
}catch(Exception e){
System.out.println("Error in RUN "+e);
}
System.out.println(Thread.currentThread().getName());
for(int i = 0; i < 10; i++){
System.out.println("Value is = "+i);
}
}
public static void main(String[] args) {
ThreadSchuduling threadObj1 = new ThreadSchuduling("Thread1");
ThreadSchuduling threadObj2 = new ThreadSchuduling("Thread2");
threadObj3 = new ThreadSchuduling("Thread3");
ThreadSchuduling threadObj4 = new ThreadSchuduling("Thread4");
threadObj1.start();
threadObj2.start();
threadObj3.start();
System.out.println("Thread 3 is started");
threadObj4.start();
try{
threadObj3.join();
}catch(Exception e){
System.out.println("Errpr "+e);
}
System.out.println("Main Method completed");
}
}
我只想在thread1和thread2之前完成thread3
您尚未说明什么是threadObj3
...是对同一线程的引用吗? 如果是这样,它会死锁是可以理解的-它一直等到完成为止,因为等待着它不会做!
您实际上想达到什么目的?
OMG,threadObj3总是自己等待,如果要在线程1和线程2之前完成线程3,则可以设置优先级,否则很难确保线程3在其他线程之前执行。
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.