关于join方法的使用只用在主线程中有效吗?

来源:3-7 join方法的使用

LeslieChan994

2019-11-11 23:11:19

在图中两个线程调用join方法没有效果啊?怎么实现线程的优先调用呢?是要设置优先级吗?http://img.mukewang.com/climg/5dc97a150945068905700606.jpg

写回答

1回答

好帮手慕酷酷

2019-11-12

同学你好,

1、第一个问题,关于join方法的使用只用在主线程中有效吗?

你的理解是正确的。因为这里两个线程都开启了,所以在主线程中调用join()方法,只能保证主线程会等待mt1线程先执行,而无法保证mt2线程不执行哦~

2、如果想要实现某个线程的优先调用,使用优先级的方式也不能完全的实现某个优先级高的线程一定先执行,因为这与电脑的环境是不同的。设置优先级,只是大大提高了优先级高的线程优先执行的概率。

同学可以在开启第一个mt1线程后,调用join()方法,使主线程进入等待,先执行mt1线程,然后再执行后面的代码,也就是开启第二个线程。

具体如下:

class MyThread1 extends Thread {
    public void run() {
        for (int i = 1; i <=10; i++)
            System.out.println(getName() + "正在执行" + i + "次!");
    }
}

public class JoinDemo1 {
    public static void main(String[] args) {
        MyThread1 mt1=new MyThread1();
        mt1.start();
        try {
            mt1.join();
        } catch (InterruptedException e) {
            // TODO Auto-generated catch block
            e.printStackTrace();
        }
        MyThread1 mt2=new MyThread1();
        mt2.start();
    }

}

另外,建议同学下次将代码粘贴出来,而不是截图哦~不方便老师快速定位问题。

如果我的回答解决了你的疑惑,请采纳!祝学习愉快!

0

0 学习 · 11489 问题

查看课程