当前位置: 首页 > 编程笔记 >

java 中Thread.join()的使用方法

贺海
2023-03-14
本文向大家介绍java 中Thread.join()的使用方法,包括了java 中Thread.join()的使用方法的使用技巧和注意事项,需要的朋友参考一下

java 中Thread.join()的使用方法

如果一个线程A执行了thread.join()语句,其含义是:当前线程A等待thread线程终止之后才从thread.join()返回。

import java.util.concurrent.TimeUnit;

/**
 * 6-13
 */
public class Join {
 public static void main(String[] args) throws Exception {
  Thread previous = Thread.currentThread();
  for (int i = 0; i < 10; i++) {
   // 每个线程拥有前一个线程的引用,需要等待前一个线程终止,才能从等待中返回
   Thread thread = new Thread(new Domino(previous), String.valueOf(i));
   thread.start();
   previous = thread;
  }

  TimeUnit.SECONDS.sleep(5);
  System.out.println(Thread.currentThread().getName() + " terminate.");
 }

 static class Domino implements Runnable {
  private Thread thread;

  public Domino(Thread thread) {
   this.thread = thread;
  }

  public void run() {
   try {
    thread.join();
   } catch (InterruptedException e) {
   }
   System.out.println(Thread.currentThread().getName() + " terminate.");
  }
 }
}

执行结果:

main terminate.
0 terminate.
1 terminate.
2 terminate.
3 terminate.
4 terminate.
5 terminate.
6 terminate.
7 terminate.
8 terminate.
9 terminate.
 

 类似资料:
  • 问题内容: 我是线程新手。我如何才能工作,从而使调用它的线程一直等到t完成执行? 这段代码只会冻结程序,因为线程正在等待自身死亡,对吧? 如果我想拥有两个线程,一个线程打印出一半的数组,然后等待另一个线程完成,然后再进行其余操作,该怎么办? 问题答案: 使用这样的东西:

  • 我写了下面的代码来满足程序要求如下: 写一个程序,读取三个整数并显示三个数字的平均值。 输入说明:在控制台输入三个整数(非负整数)。 输出注释(提示和标签):程序提示输入带有以下字符串的三个整数:“输入第一个整数。”、“输入第二个整数。”、“输入第三个整数。”然后程序打印 名称规范:您的应用程序类应该被称为Average3: 我的源代码: 我的程序编译得很好,但我知道我可以用一个关联的方法实现和调

  • 本文向大家介绍C#多线程之Thread中Thread.Join()函数用法分析,包括了C#多线程之Thread中Thread.Join()函数用法分析的使用技巧和注意事项,需要的朋友参考一下 本文实例讲述了C#多线程之Thread中Thread.Join()函数用法。分享给大家供大家参考。具体分析如下: Thread.Join()在MSDN中的解释:Blocks the calling threa

  • 本文向大家介绍Java中String.format的使用方法总结,包括了Java中String.format的使用方法总结的使用技巧和注意事项,需要的朋友参考一下 Java中String.format的用法总结 1.对整数进行格式化:%[index$][标识][最小宽度]转换方式         我们可以看到,格式化字符串由4部分组成,其中%[index$]的含义我们上面已经讲过,[最小宽度]的含

  • 问题内容: 当我使用该方法删除文件时,删除的文件在哪里?我正在使用Mac,但在“垃圾箱”中看不到该文件。我想知道文件存储在哪里?或者,如果它永久消失了。 谢谢, 问题答案: 没了。当您通过操作系统“删除”文件时,垃圾桶只是放置文件之前的临时位置。 但是,在大多数文件系统中,删除文件只会从系统的文件列表中删除指向该文件的指针。实际数据可能会在硬盘驱动器上停留大量时间,直到被覆盖。有可用的文件恢复工具

  • 问题内容: 以下代码可以编译并正常运行。 在此代码中,要调用的方法是接受type参数的方法 该文档说。 如果多个成员方法既可访问又可应用于方法调用,则必须选择一个成员方法来为运行时方法分派提供描述符。Java编程语言使用选择最具体方法的规则。 但是我不明白何时将接受原始参数的代码中的方法之一修改为接受包装器类型的参数,例如, 发出编译时错误。 对temp的引用含糊不清,methodoverload