广州北大青鸟计算机职业培训学校
互联网技术培训、软件技术培训、大数据培训、云计算培训、数据分析培训信息网
当前位置:网站首页 > 软件教程 > Java技术 > 正文

惠州什么是Java线程加入?_北大青鸟IT学校

作者:邓华发布时间:2021-05-11分类:Java技术浏览:723


导读:相信大家在学习Java的过程都会遇到各种各样的问题,例如:什么是Java线程加入?那么下面我们一起来看看惠州北大青鸟学术部老师是怎么讲解这道题的。

相信大家在学习Java的过程都会遇到各种各样的问题,例如:什么是Java线程加入?那么下面我们一起来看看惠州北大青鸟学术部老师是怎么讲解这道题的。

线程可以等待另一个线程死亡或终止。

实例

假设有两个线程,t1和t2。如果线程t1调用t2.join(),线程t1开始等待,直到线程t2终止。

调用t2.join()阻塞直到t2终止。

如果其中一个线程无法继续,直到另一个线程完成执行,在程序中使用join()方法是很有用的。

下面的代码有一个例子,当程序完成执行时,它在标准输出上打印一条消息。

public class Main {  public static void main(String[] args) {
   Thread t1 = new Thread(Main::print);
   t1.start();
   System.out.println("Done.");
 }  public static void print() {    for (int i = 1; i <= 5; i++) {      try {
       System.out.println("Counter: " + i);
       Thread.sleep(1000);
     } catch (InterruptedException e) {
       e.printStackTrace();
     }
   }
 }
}

上面的代码生成以下结果。

Done.

Counter:1

Counter:2

Counter:3

Counter:4

Counter:5

从结果我们可以看到“完成”。被打印在来自真实线程的消息之前。 t1.start(); 刚刚启动该线程,它会阻断执行,并等待线程完成。

下面的代码使用join()等待线程完成,然后打印“完成”。

public class Main {  public static void main(String[] args) {
   Thread t1 = new Thread(Main::print);
   t1.start();    try {
     t1.join();
     // "main" thread waits until t1 is terminated
   } catch (InterruptedException e) {
     e.printStackTrace();
   }
   System.out.println("Done.");
 }  public static void print() {    for (int i = 1; i <= 5; i++) {      try {
       System.out.println("Counter: " + i);
       Thread.sleep(1000);
     } catch (InterruptedException e) {
       e.printStackTrace();
     }
   }
 }
}

上面的代码生成以下结果。

Counter:1

Counter:2

Counter:3

Counter:4

Counter:5

Done.

注意

Thread类的join()方法是重载的。

其他两个版本接受超时参数。

如果我们使用join()方法和超时,调用者线程将等待,直到它被调用的线程被终止或超时已经过去。

我们应该在线程启动后调用join()方法。

如果我们在未启动的线程上调用join()方法,它立即返回。

如果我们在终止的线程上调用join()方法,它立即返回。

想了解更多关于Java的资讯,可以来惠州北大青鸟新方舟校区了解一下。

Java9.png

Java

标签:惠州计算机JAVA软件开发惠州计算机Java软件开发惠州计算机JAVA培训惠州计算机JAVA软件开发学校惠州计算机Java软件开发培训JAVAJava软件开发北大青鸟IT计算机学校北大青鸟IT软件学校北大青鸟IT学校


Java技术排行
标签列表
网站分类
文章归档
最近发表