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

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

  • 问题内容: 我遇到了一个死锁情况,可以将其总结为如下所示的StaticDeadlock类。 这个简单的程序将冻结在 o.getClass()处 。这是我对发生的事情的推测,但是有人可以更好地解释吗? 1)程序进入StaticDeadlock静态块 2) 线程 启动 3) 主线程 置于等待 线程 完成,因此无法完成静态块 4)在 线程 内部,它访问 StaticDeadlock.o, 但Static