教育行业A股IPO第一股(股票代码 003032)

全国咨询/投诉热线:400-618-4000

join()方法实现线程插队

更新时间:2022年03月02日17时41分 来源:传智教育 浏览次数:

现实生活中经常能碰到“插队”的情况,同样,在Thread 类中也提供了一个join()方法来实现这个“功能”。当在某个线程中调用其他线程的join()方法时,调用的线程将被阻塞,直到被join()方法加入的线程执行完成后它才会继续运行。接下来通过一个案例来演示join()方法的使用,如下所示。

class EmergencyThread implements Runnable {
    public void run() {
        for (int i = 1; i < 6; i++) {
            System.out.println(Thread.currentThread().getName()
             + "输入:”+i);
            }
        }
    }
    public class Examplel0 {
        public static void main(String[] args) throws InterruptedException {
            //创建线程
            Thread threadl = new Thread(new EmergencyThread(), "threadl");
            threadl.start(); //开启线程
            for (inc i = 1; i < 6; i++) {
                System.out.println(Thread.currentThread().getName() + ”输入:” + i);
                    if (i == 2) {
                        threadl.join(); //调用join()方法
                    }
                }
            }
        }
运行结果如图所示。

例10-10中,在main线程中开启了一个线程thread1,这两个线程会相互争夺CPU使用权输出语句。当main线程中的循环变量为2时,调用thread1线程的join()方法,这时,thread1线程就会“插队”优先执行,并且整个程序执行完毕后才会执行其他线程。从运行结果可以看出,当main线程输出2以后,thread1线程就开始执行,直到执行完毕,main线程才继续执行。

Thread类中除了提供一个无参数的线程插队join()方法外,还提供了带有时间参数的线程插队方法join(long millis)。当执行带有时间参数的join(long millis)进行线程插队时,必须等待插入的线程指定时间过后才会继续执行其他线程。






猜你喜欢:

什么是线程让步?

什么是线程安全?如何理解线程安全?

怎样保障多线程同步数据的安全?

Java线程优先级:Thread类的优先级常量

传智教育Java高级软件工程师培训

0 分享到:
和我们在线交谈!