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