groovy 中的 Join() 不等待线程完成

洛克人

我期待输出是:

testing
DONE! 6

但实际上是

DONE! 5

join() 不等待线程完成吗?

Thread[] T = new Thread[3];
int n = 5;
for(i = 0; i < 3; i++)
    T[i] = new Thread();
Thread x = new Thread();
T[1].start{
    sleep(500);
    log.info "testing";
}
x.start{
    n++;
}

x.join();
T[1].join();
log.info "DONE! " + n;
共享

简短的答案是您没有启动线程(T[1]x)。

当您说T[1].start{..这并不意味着您正在启动T[1}线程时,您只是在创建和启动匿名线程。

解决方案

T[1] = T[1].start{
    sleep(500);
    log.info "testing";
}

工作代码:

Thread[] T = new Thread[3];
int n = 5;
for(i = 0; i < 3; i++)
    T[i] = new Thread();
Thread x = new Thread();
T[1] = T[1].start{
    sleep(500);
    println "testing";
}
x= x.start{
    n++;
}

x.join();
T[1].join();
println "DONE! " + n;

查看文档以获取详细信息

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章

线程join()不等待

Java Thread.Join()方法不等待线程完成

如何不等待线程在Python中完成

如何等待线程在android中完成

避免等待线程在Python中完成

等待UI线程在Android中完成操作

为什么pthread_join不会阻塞并等待线程完成?

如何等待函数完成(线程中的线程)

ManualResetEvent不等待线程池完成

Python:如何不等待线程完成?

即使在 Java 中使用 Thread.join() 之后,Main 也不等待线程

主线程中的多线程矩阵乘法是否不等到其他线程完成其工作?

Java线程中的函数Join()

等待来自加载的dll的线程在Windows中完成

等待执行程序中的所有线程完成?

Main方法等待执行中的线程完成。为什么?

c#-等待2个线程中的1个完成

主线程不等待所有ThreadPoolExecutor线程完成

等待线程以.join插入结束

在setUp()方法中的注入会导致框架不等待Future完成

如何在不等待它在php中完成的情况下调用函数?

如何在Python中运行另一个脚本而不等待它完成?

Swift:如何在不等待进程完成的情况下读取子进程中的标准输出

如何在GenServer Elixir中不等待前一个请求完成而每秒发出请求

在Kotlin中,处理程序线程会等待另一个线程完成吗?

如何在Haskell中强制主线程等待其所有子线程完成

在c中,如何使一个线程等待其他线程完成

如何在With Query中完成Multiple Join?

join()如何工作?(Java中的多线程)