更新时间:2022-03-04 来源:黑马程序员 浏览量:
现实生活中经常能碰到“插队”的情况,同样,在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)进行线程插队时,必须等待插入的线程指定时间过后才会继续执行其他线程。
【AI设计】北京143期毕业仅36天,全员拿下高薪offer!黑马AI设计连续6期100%高薪就业
2025-09-19【跨境电商运营】深圳跨境电商运营毕业22个工作日,就业率91%+,最高薪资达13500元
2025-09-19【AI运维】郑州运维1期就业班,毕业14个工作日,班级93%同学已拿到Offer, 一线均薪资 1W+
2025-09-19【AI鸿蒙开发】上海校区AI鸿蒙开发4期5期,距离毕业21天,就业率91%,平均薪资14046元
2025-09-19【AI大模型开发-Python】毕业33个工作日,就业率已达到94.55%,班均薪资20763元
2025-09-19【AI智能应用开发-Java】毕业5个工作日就业率98.18%,最高薪资 17.5k*13薪,全班平均薪资9244元
2025-09-19