繁体   English   中英

Java Thread Join方法

[英]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.

 
粤ICP备18138465号  © 2020-2024 STACKOOM.COM