【问题标题】:Join() in groovy doesn't wait for threads to finishgroovy 中的 Join() 不等待线程完成
【发布时间】:2017-03-04 00:12:51
【问题描述】:

我希望输出是:

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;

【问题讨论】:

  • 你正在涉足深海;)。我得到Done! 6 testingGroovy Version: 2.4.7 JVM: 1.8.0_112 Vendor: Oracle Corporation OS: Mac OS X
  • 很好,至少我知道这不是代码。我在 SoapUI 5.2.1 中使用 Groovy

标签: java multithreading groovy


【解决方案1】:

简短的回答是你没有开始你的线程(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;

查看details的文档:

【讨论】:

    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2015-08-29
    • 2011-06-09
    • 2010-10-16
    相关资源
    最近更新 更多