主线程控制10个子线程运行完成后,输出,主要用到的知识点countDownLunch
代码简易实现如下 :
public static void main(String[] args) throws Exception {
//控制10个子线程都运行完
CountDownLatch countDownLatch = new CountDownLatch(10);
for(int i=1 ;i<=10 ;i++){
new Thread(new ChildThread("子线程1 " + i,countDownLatch)).start();
}
countDownLatch.await();
System.out
.println("所有子线程运行完");
}
子线程 : 传入countDownLatch
package com.moedu.aital.web.poisonpill;
import java.util.concurrent.CountDownLatch;
/**
* @author mossGao
* @Description 子线程运行完成后,回调 countDownLatch 通知
* @create 2020-03-27 16:38
**/
public class ChildThread implements Runnable {
private String name;
private CountDownLatch countDownLatch;
public ChildThread(String name, CountDownLatch noMoreToProduce) {
this.name = name;
this.countDownLatch = noMoreToProduce;
}
@Override
public void run() {
System.out.println(name + " 开启运行.");
try {
Thread.sleep(1);
} catch (InterruptedException e) {
//log
} finally {
System.out.println(name + " 运行完成.");
countDownLatch.countDown();
}
}
}
效果如下:
"C:\Program Files (x86)\Java\jdk1.8.0_131\bin\java" "-javaagent:C:\Program Files\JetBrains\IntelliJ IDEA 2018.1\lib\idea_rt.jar=55237:C:\Program Files\JetBrains\IntelliJ IDEA 2018.1\bin" -Dfile.encoding=UTF-8 -classpath "C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\charsets.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\deploy.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\access-bridge-32.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\cldrdata.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\dnsns.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\jaccess.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\jfxrt.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\localedata.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\nashorn.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\sunec.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\sunjce_provider.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\sunmscapi.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\sunpkcs11.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\ext\zipfs.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\javaws.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\jce.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\jfr.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\jfxswt.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\jsse.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\management-agent.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\plugin.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\resources.jar;C:\Program Files (x86)\Java\jdk1.8.0_131\jre\lib\rt.jar;E:\work\aital\code\aital\aital-homework-web\target\classes;E:\work\aital\code\aital\aital-homework-core\target\classes;D:\work\aitai\com\cntest\su-starter-auth\1.0.3-SNAPSHOT\su-starter-auth-1.0.3-20200114.041856-44.jar;D:\work\aitai\com\cntest\su-starter-web\1.0.3-SNAPSHOT\su-starter-web-1.0.3-20200114.041844-44.jar;D:\work\aitai\org\apache\shiro\shiro-spring\1.4.1\shiro-spring-1.4.1.jar;D:\work\aitai\org\apache\shiro\shiro-core\1.4.1\shiro-core-1.4.1.jar;D:\work\aitai\org\apache\shiro\shiro-lang\1.4.1\shiro-lang-1.4.1.jar;D:\work\aitai\org\apache\shiro\shiro-cache\1.4.1\shiro-cache-1.4.1.jar;D:\work\aitai\org\apache\shiro\shiro-crypto-hash\1.4.1\shiro-crypto-hash-1.4.1.jar;D:\work\aitai\org\apache\shiro\shiro-crypto-core\1.4.1\shiro-crypto-core-1.4.1.jar;D:\work\aitai\org\apache\shiro\shiro-crypto-cipher\1.4.1\shiro-crypto-cipher-1.4.1.jar;D:\work\aitai\org\apache\shiro\shiro-config-core\1.4.1\shiro-config-core-1.4.1.jar;D:\work\aitai\org\apache\shiro\shiro-config-ogdl\1.4.1\shiro-config-ogdl-1.4.1.jar;D:\work\aitai\org\apache\shiro\shiro-event\1.4.1\shiro-event-1.4.1.jar;D:\work\aitai\org\apache\shiro\shiro-web\1.4.1\shiro-web-1.4.1.jar;D:\work\aitai\com\cntest\su-starter-cache-redis\1.0.3-SNAPSHOT\su-starter-cache-redis-1.0.3-20200114.041835-44.jar;D:\work\aitai\com\cntest\su-starter-cache\1.0.3-SNAPSHOT\su-starter-cache-1.0.3-20200114.041833-44.jar;D:\work\aitai\org\springframework\session\spring-session-core\2.1.7.RELEASE\spring-session-core-2.1.7.RELEASE.jar;D:\work\aitai\de\ruedigermoeller\fst\2.57\fst-2.57.jar;D:\work\aitai\org\springframework\boot\spring-boot-starter-data-redis\2.1.6.RELEASE\spring-boot-starter-data-redis-2.1.6.RELEASE.jar;D:\work\aitai\org\springframework\data\spring-data-redis\2.1.9.RELEASE\spring-data-redis-2.1.9.RELEASE.jar;D:\work\aitai\org\springframework\data\spring-data-keyvalue\2.1.9.RELEASE\spring-data-keyvalue-2.1.9.RELEASE.jar;D:\work\aitai\org\springframework\data\spring-data-commons\2.1.9.RELEASE\spring-data-commons-2.1.9.RELEASE.jar;D:\work\aitai\org\springframework\spring-tx\5.1.8.RELEASE\spring-tx-5.1.8.RELEASE.jar;D:\work\aitai\org\springframework\spring-oxm\5.1.8.RELEASE\spring-oxm-5.1.8.RELEASE.jar;D:\work\aitai\org\springframework\spring-context-support\5.1.8.RELEASE\spring-context-support-5.1.8.RELEASE.jar;D:\work\aitai\io\lettuce\lettuce-core\5.1.7.RELEASE\lettuce-core-5.1.7.RELEASE.jar;D:\work\aitai\io\netty\netty-common\4.1.36.Final\netty-common-4.1.36.Final.jar;D:\work\aitai\io\netty\netty-handler\4.1.36.Final\netty-handler-4.1.36.Final.jar;D:\work\aitai\io\netty\netty-buffer\4.1.36.Final\netty-buffer-4.1.36.Final.jar;D:\work\aitai\io\netty\netty-codec\4.1.36.Final\netty-codec-4.1.36.Final.jar;D:\work\aitai\io\netty\netty-transport\4.1.36.Final\netty-transport-4.1.36.Final.jar;D:\work\aitai\io\netty\netty-resolver\4.1.36.Final\netty-resolver-4.1.36.Final.jar;D:\work\aitai\io\projectreactor\reactor-core\3.2.10.RELEASE\reactor-core-3.2.10.RELEASE.jar;D:\work\aitai\org\reactivestreams\reactive-streams\1.0.2\reactive-streams-1.0.2.jar;D:\work\aitai\org\springframework\session\spring-session-data-redis\2.1.7.RELEASE\spring-session-data-redis-2.1.7.RELEASE.jar;D:\work\aitai\org\apache\commons\commons-pool2\2.6.2\commons-pool2-2.6.2.jar;D:\work\aitai\com\cntest\su-starter-ienum\1.0.3-SNAPSHOT\su-starter-ienum-1.0.3-20200114.041915-44.jar;D:\work\aitai\com\cntest\su-starter-base\1.0.3-SNAPSHOT\su-starter-base-1.0.3-20200114.041831-44.jar;D:\work\aitai\com\fasterxml\jackson\dataformat\jackson-dataformat-xml\2.9.9\jackson-dataformat-xml-2.9.9.jar;D:\work\aitai\com\fasterxml\jackson\module\jackson-module-jaxb-annotations\2.9.9\jackson-module-jaxb-annotations-2.9.9.jar;D:\work\aitai\org\codehaus\woodstox\stax2-api\3.1.4\stax2-api-3.1.4.jar;D:\work\aitai\com\fasterxml\woodstox\woodstox-core\5.0.3\woodstox-core-5.0.3.jar;D:\work\aitai\com\fasterxml\jackson\datatype\jackson-datatype-joda\2.9.9\jackson-datatype-joda-2.9.9.jar;D:\work\aitai\joda-time\joda-time\2.10.2\joda-time-2.10.2.jar;D:\work\aitai\org\apache\httpcomponents\httpclient\4.5.9\httpclient-4.5.9.jar;D:\work\aitai\org\apache\httpcomponents\httpcore\4.4.11\httpcore-4.4.11.jar;D:\work\aitai\com\cntest\su-starter-mybatis-dao\1.0.3-SNAPSHOT\su-starter-mybatis-dao-1.0.3-20200114.041917-25.jar;D:\work\aitai\com\cntest\su-starter-swagger\1.0.3-SNAPSHOT\su-starter-swagger-1.0.3-20200114.041841-44.jar;D:\work\aitai\com\github\xiaoymin\swagger-bootstrap-ui\1.9.4\swagger-bootstrap-ui-1.9.4.jar;D:\work\aitai\org\javassist\javassist\3.25.0-GA\javassist-3.25.0-GA.jar;D:\work\aitai\com\cntest\su-starter-dfs\1.0.3-SNAPSHOT\su-starter-dfs-1.0.3-20200114.041943-44.jar;D:\work\aitai\com\huaweicloud\esdk-obs-java\3.0.3\esdk-obs-java-3.0.3.jar;D:\work\aitai\com\jamesmurty\utils\java-xmlbuilder\1.1\java-xmlbuilder-1.1.jar;D:\work\aitai\com\squareup\okhttp3\okhttp\3.8.1\okhttp-3.8.1.jar;D:\work\aitai\com\squareup\okio\okio\1.14.0\okio-1.14.0.jar;D:\work\aitai\org\apache\logging\log4j\log4j-core\2.11.2\log4j-core-2.11.2.jar;D:\work\aitai\org\apache\logging\log4j\log4j-api\2.11.2\log4j-api-2.11.2.jar;D:\work\aitai\com\aliyun\oss\aliyun-sdk-oss\3.1.0\aliyun-sdk-oss-3.1.0.jar;D:\work\aitai\org\jdom\jdom\1.1\jdom-1.1.jar;D:\work\aitai\com\sun\jersey\jersey-json\1.9\jersey-json-1.9.jar;D:\work\aitai\org\codehaus\jettison\jettison\1.1\jettison-1.1.jar;D:\work\aitai\stax\stax-api\1.0.1\stax-api-1.0.1.jar;D:\work\aitai\com\sun\xml\bind\jaxb-impl\2.2.3-1\jaxb-impl-2.2.3-1.jar;D:\work\aitai\org\codehaus\jackson\jackson-core-asl\1.8.3\jackson-core-asl-1.8.3.jar;D:\work\aitai\org\codehaus\jackson\jackson-mapper-asl\1.8.3\jackson-mapper-asl-1.8.3.jar;D:\work\aitai\org\codehaus\jackson\jackson-jaxrs\1.8.3\jackson-jaxrs-1.8.3.jar;D:\work\aitai\org\codehaus\jackson\jackson-xc\1.8.3\jackson-xc-1.8.3.jar;D:\work\aitai\com\sun\jersey\jersey-core\1.19.1\jersey-core-1.19.1.jar;D:\work\aitai\javax\ws\rs\jsr311-api\1.1.1\jsr311-api-1.1.1.jar;D:\work\aitai\com\aliyun\aliyun-java-sdk-core\4.4.1\aliyun-java-sdk-core-4.4.1.jar;D:\work\aitai\com\google\code\gson\gson\2.8.5\gson-2.8.5.jar;D:\work\aitai\commons-logging\commons-logging\1.2\commons-logging-1.2.jar;D:\work\aitai\javax\xml\bind\jaxb-api\2.3.1\jaxb-api-2.3.1.jar;D:\work\aitai\javax\activation\javax.activation-api\1.2.0\javax.activation-api-1.2.0.jar;D:\work\aitai\org\jacoco\org.jacoco.agent\0.8.3\org.jacoco.agent-0.8.3-runtime.jar;D:\work\aitai\org\ini4j\ini4j\0.5.4\ini4j-0.5.4.jar;D:\work\aitai\com\aliyun\aliyun-java-sdk-ram\3.0.0\aliyun-java-sdk-ram-3.0.0.jar;D:\work\aitai\com\aliyun\aliyun-java-sdk-sts\3.0.0\aliyun-java-sdk-sts-3.0.0.jar;D:\work\aitai\com\aliyun\aliyun-java-sdk-ecs\4.2.0\aliyun-java-sdk-ecs-4.2.0.jar;D:\work\aitai\com\github\tobato\fastdfs-client\1.26.2\fastdfs-client-1.26.2.jar;D:\work\aitai\org\apache\commons\commons-lang3\3.8.1\commons-lang3-3.8.1.jar;D:\work\aitai\commons-beanutils\commons-beanutils\1.9.1\commons-beanutils-1.9.1.jar;D:\work\aitai\commons-collections\commons-collections\3.2.1\commons-collections-3.2.1.jar;D:\work\aitai\org\mockito\mockito-all\1.9.5\mockito-all-1.9.5.jar;D:\work\aitai\net\coobird\thumbnailator\0.4.8\thumbnailator-0.4.8.jar;D:\work\aitai\com\cntest\su-starter-mybatis\1.0.3-SNAPSHOT\su-starter-mybatis-1.0.3-20200114.041913-44.jar;D:\work\aitai\com\alibaba\druid-spring-boot-starter\1.1.18\druid-spring-boot-starter-1.1.18.jar;D:\work\aitai\com\alibaba\druid\1.1.18\druid-1.1.18.jar;D:\work\aitai\org\mybatis\spring\boot\mybatis-spring-boot-starter\2.1.0\mybatis-spring-boot-starter-2.1.0.jar;D:\work\aitai\org\mybatis\spring\boot\mybatis-spring-boot-autoconfigure\2.1.0\mybatis-spring-boot-autoconfigure-2.1.0.jar;D:\work\aitai\com\github\pagehelper\pagehelper-spring-boot-starter\1.2.12\pagehelper-spring-boot-starter-1.2.12.jar;D:\work\aitai\com\github\pagehelper\pagehelper-spring-boot-autoconfigure\1.2.12\pagehelper-spring-boot-autoconfigure-1.2.12.jar;D:\work\aitai\com\github\pagehelper\pagehelper\5.1.10\pagehelper-5.1.10.jar;D:\work\aitai\com\github\jsqlparser\jsqlparser\2.0\jsqlparser-2.0.jar;D:\work\aitai\mysql\mysql-connector-java\8.0.16\mysql-connector-java-8.0.16.jar;D:\work\aitai\tk\mybatis\mapper-spring-boot-starter\2.1.5\mapper-spring-boot-starter-2.1.5.jar;D:\work\aitai\org\springframework\boot\spring-boot-starter-jdbc\2.1.6.RELEASE\spring-boot-starter-jdbc-2.1.6.RELEASE.jar;D:\work\aitai\com\zaxxer\HikariCP\3.2.0\HikariCP-3.2.0.jar;D:\work\aitai\org\springframework\spring-jdbc\5.1.8.RELEASE\spring-jdbc-5.1.8.RELEASE.jar;D:\work\aitai\org\mybatis\mybatis\3.4.6\mybatis-3.4.6.jar;D:\work\aitai\org\mybatis\mybatis-spring\1.3.2\mybatis-spring-1.3.2.jar;D:\work\aitai\tk\mybatis\mapper-core\1.1.5\mapper-core-1.1.5.jar;D:\work\aitai\javax\persistence\persistence-api\1.0\persistence-api-1.0.jar;D:\work\aitai\tk\mybatis\mapper-base\1.1.5\mapper-base-1.1.5.jar;D:\work\aitai\tk\mybatis\mapper-weekend\1.1.5\mapper-weekend-1.1.5.jar;D:\work\aitai\tk\mybatis\mapper-spring\1.1.5\mapper-spring-1.1.5.jar;D:\work\aitai\tk\mybatis\mapper-extra\1.1.5\mapper-extra-1.1.5.jar;D:\work\aitai\tk\mybatis\mapper-spring-boot-autoconfigure\2.1.5\mapper-spring-boot-autoconfigure-2.1.5.jar;D:\work\aitai\com\cntest\su-starter-auth-server\1.0.3-SNAPSHOT\su-starter-auth-server-1.0.3-20200114.041900-44.jar;D:\work\aitai\com\cntest\su-starter-privileg\1.0.3-SNAPSHOT\su-starter-privileg-1.0.3-20200114.041851-44.jar;D:\work\aitai\org\springframework\boot\spring-boot-autoconfigure\2.1.6.RELEASE\spring-boot-autoconfigure-2.1.6.RELEASE.jar;D:\work\aitai\org\projectlombok\lombok\1.18.8\lombok-1.18.8.jar;D:\work\aitai\org\springframework\boot\spring-boot-starter\2.1.6.RELEASE\spring-boot-starter-2.1.6.RELEASE.jar;D:\work\aitai\org\springframework\boot\spring-boot-starter-logging\2.1.6.RELEASE\spring-boot-starter-logging-2.1.6.RELEASE.jar;D:\work\aitai\ch\qos\logback\logback-classic\1.2.3\logback-classic-1.2.3.jar;D:\work\aitai\ch\qos\logback\logback-core\1.2.3\logback-core-1.2.3.jar;D:\work\aitai\org\apache\logging\log4j\log4j-to-slf4j\2.11.2\log4j-to-slf4j-2.11.2.jar;D:\work\aitai\org\slf4j\jul-to-slf4j\1.7.26\jul-to-slf4j-1.7.26.jar;D:\work\aitai\javax\annotation\javax.annotation-api\1.3.2\javax.annotation-api-1.3.2.jar;D:\work\aitai\org\yaml\snakeyaml\1.23\snakeyaml-1.23.jar;D:\work\aitai\net\bytebuddy\byte-buddy\1.9.13\byte-buddy-1.9.13.jar;D:\work\aitai\org\objenesis\objenesis\2.6\objenesis-2.6.jar;D:\work\aitai\org\springframework\spring-core\5.1.8.RELEASE\spring-core-5.1.8.RELEASE.jar;D:\work\aitai\org\springframework\spring-jcl\5.1.8.RELEASE\spring-jcl-5.1.8.RELEASE.jar;D:\work\aitai\org\springframework\boot\spring-boot-configuration-processor\2.1.6.RELEASE\spring-boot-configuration-processor-2.1.6.RELEASE.jar;D:\work\aitai\org\springframework\boot\spring-boot-devtools\2.1.6.RELEASE\spring-boot-devtools-2.1.6.RELEASE.jar;D:\work\aitai\org\springframework\boot\spring-boot\2.1.6.RELEASE\spring-boot-2.1.6.RELEASE.jar;D:\work\aitai\org\springframework\spring-context\5.1.8.RELEASE\spring-context-5.1.8.RELEASE.jar;D:\work\aitai\com\alibaba\cloud\spring-cloud-starter-alibaba-nacos-discovery\2.1.1.RELEASE\spring-cloud-starter-alibaba-nacos-discovery-2.1.1.RELEASE.jar;D:\work\aitai\com\alibaba\cloud\spring-cloud-alibaba-nacos-discovery\2.1.1.RELEASE\spring-cloud-alibaba-nacos-discovery-2.1.1.RELEASE.jar;D:\work\aitai\com\alibaba\nacos\nacos-client\1.1.4\nacos-client-1.1.4.jar;D:\work\aitai\com\alibaba\nacos\nacos-common\1.1.4\nacos-common-1.1.4.jar;D:\work\aitai\com\alibaba\nacos\nacos-api\1.1.4\nacos-api-1.1.4.jar;D:\work\aitai\io\prometheus\simpleclient\0.5.0\simpleclient-0.5.0.jar;D:\work\aitai\org\springframework\cloud\spring-cloud-context\2.1.2.RELEASE\spring-cloud-context-2.1.2.RELEASE.jar;D:\work\aitai\org\springframework\cloud\spring-cloud-starter-netflix-ribbon\2.1.2.RELEASE\spring-cloud-starter-netflix-ribbon-2.1.2.RELEASE.jar;D:\work\aitai\org\springframework\cloud\spring-cloud-starter-netflix-archaius\2.1.2.RELEASE\spring-cloud-starter-netflix-archaius-2.1.2.RELEASE.jar;D:\work\aitai\com\netflix\ribbon\ribbon\2.3.0\ribbon-2.3.0.jar;D:\work\aitai\com\netflix\ribbon\ribbon-transport\2.3.0\ribbon-transport-2.3.0.jar;D:\work\aitai\io\reactivex\rxnetty-contexts\0.4.9\rxnetty-contexts-0.4.9.jar;D:\work\aitai\io\reactivex\rxnetty-servo\0.4.9\rxnetty-servo-0.4.9.jar;D:\work\aitai\javax\inject\javax.inject\1\javax.inject-1.jar;D:\work\aitai\io\reactivex\rxnetty\0.4.9\rxnetty-0.4.9.jar;D:\work\aitai\com\netflix\ribbon\ribbon-core\2.3.0\ribbon-core-2.3.0.jar;D:\work\aitai\com\netflix\ribbon\ribbon-httpclient\2.3.0\ribbon-httpclient-2.3.0.jar;D:\work\aitai\com\sun\jersey\jersey-client\1.19.1\jersey-client-1.19.1.jar;D:\work\aitai\com\sun\jersey\contribs\jersey-apache-client4\1.19.1\jersey-apache-client4-1.19.1.jar;D:\work\aitai\com\netflix\servo\servo-core\0.12.21\servo-core-0.12.21.jar;D:\work\aitai\com\netflix\netflix-commons\netflix-commons-util\0.3.0\netflix-commons-util-0.3.0.jar;D:\work\aitai\com\netflix\ribbon\ribbon-loadbalancer\2.3.0\ribbon-loadbalancer-2.3.0.jar;D:\work\aitai\com\netflix\netflix-commons\netflix-statistics\0.1.1\netflix-statistics-0.1.1.jar;D:\work\aitai\io\reactivex\rxjava\1.3.8\rxjava-1.3.8.jar;D:\work\aitai\org\springframework\cloud\spring-cloud-starter-openfeign\2.1.2.RELEASE\spring-cloud-starter-openfeign-2.1.2.RELEASE.jar;D:\work\aitai\org\springframework\cloud\spring-cloud-starter\2.1.2.RELEASE\spring-cloud-starter-2.1.2.RELEASE.jar;D:\work\aitai\org\springframework\security\spring-security-rsa\1.0.7.RELEASE\spring-security-rsa-1.0.7.RELEASE.jar;D:\work\aitai\org\bouncycastle\bcpkix-jdk15on\1.60\bcpkix-jdk15on-1.60.jar;D:\work\aitai\org\bouncycastle\bcprov-jdk15on\1.60\bcprov-jdk15on-1.60.jar;D:\work\aitai\org\springframework\cloud\spring-cloud-openfeign-core\2.1.2.RELEASE\spring-cloud-openfeign-core-2.1.2.RELEASE.jar;D:\work\aitai\org\springframework\cloud\spring-cloud-netflix-ribbon\2.1.2.RELEASE\spring-cloud-netflix-ribbon-2.1.2.RELEASE.jar;D:\work\aitai\org\springframework\cloud\spring-cloud-netflix-archaius\2.1.2.RELEASE\spring-cloud-netflix-archaius-2.1.2.RELEASE.jar;D:\work\aitai\org\springframework\boot\spring-boot-starter-aop\2.1.6.RELEASE\spring-boot-starter-aop-2.1.6.RELEASE.jar;D:\work\aitai\org\aspectj\aspectjweaver\1.9.4\aspectjweaver-1.9.4.jar;D:\work\aitai\org\springframework\spring-web\5.1.8.RELEASE\spring-web-5.1.8.RELEASE.jar;D:\work\aitai\org\springframework\spring-beans\5.1.8.RELEASE\spring-beans-5.1.8.RELEASE.jar;D:\work\aitai\org\springframework\cloud\spring-cloud-commons\2.1.2.RELEASE\spring-cloud-commons-2.1.2.RELEASE.jar;D:\work\aitai\org\springframework\security\spring-security-crypto\5.1.5.RELEASE\spring-security-crypto-5.1.5.RELEASE.jar;D:\work\aitai\io\github\openfeign\feign-core\10.2.3\feign-core-10.2.3.jar;D:\work\aitai\io\github\openfeign\feign-slf4j\10.2.3\feign-slf4j-10.2.3.jar;D:\work\aitai\io\github\openfeign\feign-hystrix\10.2.3\feign-hystrix-10.2.3.jar;D:\work\aitai\com\netflix\archaius\archaius-core\0.7.6\archaius-core-0.7.6.jar;D:\work\aitai\com\google\code\findbugs\jsr305\3.0.1\jsr305-3.0.1.jar;D:\work\aitai\commons-configuration\commons-configuration\1.8\commons-configuration-1.8.jar;D:\work\aitai\com\netflix\hystrix\hystrix-core\1.5.18\hystrix-core-1.5.18.jar;D:\work\aitai\org\hdrhistogram\HdrHistogram\2.1.9\HdrHistogram-2.1.9.jar;D:\work\aitai\com\moedu\moedu-ecp-fileserver-api\1.0-SNAPSHOT\moedu-ecp-fileserver-api-1.0-20200325.190039-28.jar;D:\work\aitai\org\springframework\boot\spring-boot-starter-web\2.1.6.RELEASE\spring-boot-starter-web-2.1.6.RELEASE.jar;D:\work\aitai\org\springframework\boot\spring-boot-starter-json\2.1.6.RELEASE\spring-boot-starter-json-2.1.6.RELEASE.jar;D:\work\aitai\com\fasterxml\jackson\datatype\jackson-datatype-jdk8\2.9.9\jackson-datatype-jdk8-2.9.9.jar;D:\work\aitai\org\springframework\boot\spring-boot-starter-undertow\2.1.6.RELEASE\spring-boot-starter-undertow-2.1.6.RELEASE.jar;D:\work\aitai\io\undertow\undertow-core\2.0.21.Final\undertow-core-2.0.21.Final.jar;D:\work\aitai\org\jboss\xnio\xnio-api\3.3.8.Final\xnio-api-3.3.8.Final.jar;D:\work\aitai\org\jboss\xnio\xnio-nio\3.3.8.Final\xnio-nio-3.3.8.Final.jar;D:\work\aitai\io\undertow\undertow-servlet\2.0.21.Final\undertow-servlet-2.0.21.Final.jar;D:\work\aitai\org\jboss\spec\javax\annotation\jboss-annotations-api_1.2_spec\1.0.2.Final\jboss-annotations-api_1.2_spec-1.0.2.Final.jar;D:\work\aitai\io\undertow\undertow-websockets-jsr\2.0.21.Final\undertow-websockets-jsr-2.0.21.Final.jar;D:\work\aitai\org\jboss\spec\javax\websocket\jboss-websocket-api_1.1_spec\1.1.4.Final\jboss-websocket-api_1.1_spec-1.1.4.Final.jar;D:\work\aitai\org\glassfish\javax.el\3.0.0\javax.el-3.0.0.jar;D:\work\aitai\com\moedu\moedu-frame-core\1.0-SNAPSHOT\moedu-frame-core-1.0-20200323.182822-26.jar;D:\work\aitai\com\baomidou\mybatis-plus\3.3.1\mybatis-plus-3.3.1.jar;D:\work\aitai\com\baomidou\mybatis-plus-extension\3.3.1\mybatis-plus-extension-3.3.1.jar;D:\work\aitai\com\baomidou\mybatis-plus-core\3.3.1\mybatis-plus-core-3.3.1.jar;D:\work\aitai\com\baomidou\mybatis-plus-annotation\3.3.1\mybatis-plus-annotation-3.3.1.jar;D:\work\aitai\io\springfox\springfox-swagger2\2.9.2\springfox-swagger2-2.9.2.jar;D:\work\aitai\io\springfox\springfox-spi\2.9.2\springfox-spi-2.9.2.jar;D:\work\aitai\io\springfox\springfox-core\2.9.2\springfox-core-2.9.2.jar;D:\work\aitai\io\springfox\springfox-schema\2.9.2\springfox-schema-2.9.2.jar;D:\work\aitai\io\springfox\springfox-swagger-common\2.9.2\springfox-swagger-common-2.9.2.jar;D:\work\aitai\io\springfox\springfox-spring-web\2.9.2\springfox-spring-web-2.9.2.jar;D:\work\aitai\com\fasterxml\classmate\1.4.0\classmate-1.4.0.jar;D:\work\aitai\org\springframework\plugin\spring-plugin-core\1.2.0.RELEASE\spring-plugin-core-1.2.0.RELEASE.jar;D:\work\aitai\org\springframework\plugin\spring-plugin-metadata\1.2.0.RELEASE\spring-plugin-metadata-1.2.0.RELEASE.jar;D:\work\aitai\org\mapstruct\mapstruct\1.2.0.Final\mapstruct-1.2.0.Final.jar;D:\work\aitai\io\swagger\swagger-models\1.5.21\swagger-models-1.5.21.jar;D:\work\aitai\com\fasterxml\jackson\core\jackson-annotations\2.9.0\jackson-annotations-2.9.0.jar;D:\work\aitai\io\swagger\swagger-annotations\1.5.21\swagger-annotations-1.5.21.jar;D:\work\aitai\org\hibernate\validator\hibernate-validator\6.0.17.Final\hibernate-validator-6.0.17.Final.jar;D:\work\aitai\javax\validation\validation-api\2.0.1.Final\validation-api-2.0.1.Final.jar;D:\work\aitai\org\jboss\logging\jboss-logging\3.3.2.Final\jboss-logging-3.3.2.Final.jar;D:\work\aitai\commons-lang\commons-lang\2.6\commons-lang-2.6.jar;D:\work\aitai\commons-codec\commons-codec\1.11\commons-codec-1.11.jar;D:\work\aitai\com\fasterxml\jackson\core\jackson-core\2.9.9\jackson-core-2.9.9.jar;D:\work\aitai\com\fasterxml\jackson\datatype\jackson-datatype-jsr310\2.9.9\jackson-datatype-jsr310-2.9.9.jar;D:\work\aitai\com\fasterxml\jackson\module\jackson-module-parameter-names\2.9.9\jackson-module-parameter-names-2.9.9.jar;D:\work\aitai\com\fasterxml\jackson\core\jackson-databind\2.9.9\jackson-databind-2.9.9.jar;D:\work\aitai\cn\hutool\hutool-all\5.1.2\hutool-all-5.1.2.jar;D:\work\aitai\org\slf4j\slf4j-api\1.7.26\slf4j-api-1.7.26.jar;D:\work\aitai\com\alibaba\fastjson\1.2.58\fastjson-1.2.58.jar;D:\work\aitai\com\google\guava\guava\20.0\guava-20.0.jar;D:\work\aitai\io\github\openfeign\form\feign-form\3.8.0\feign-form-3.8.0.jar;D:\work\aitai\io\github\openfeign\form\feign-form-spring\3.8.0\feign-form-spring-3.8.0.jar;D:\work\aitai\commons-fileupload\commons-fileupload\1.4\commons-fileupload-1.4.jar;D:\work\aitai\commons-io\commons-io\2.6\commons-io-2.6.jar;D:\work\aitai\com\moedu\moedu-frame-auth\1.0-SNAPSHOT\moedu-frame-auth-1.0-20200319.043435-17.jar;D:\work\aitai\io\jsonwebtoken\jjwt\0.7.0\jjwt-0.7.0.jar;D:\work\aitai\org\springframework\spring-webmvc\5.1.8.RELEASE\spring-webmvc-5.1.8.RELEASE.jar;D:\work\aitai\org\springframework\spring-aop\5.1.8.RELEASE\spring-aop-5.1.8.RELEASE.jar;D:\work\aitai\org\springframework\spring-expression\5.1.8.RELEASE\spring-expression-5.1.8.RELEASE.jar;D:\work\aitai\javax\servlet\javax.servlet-api\4.0.1\javax.servlet-api-4.0.1.jar;D:\work\aitai\com\moedu\moedu-ecp-user-api\1.0-SNAPSHOT\moedu-ecp-user-api-1.0-20200325.204102-1.jar;D:\work\aitai\com\moedu\moedu-ecp-subject-api\1.0-SNAPSHOT\moedu-ecp-subject-api-1.0-20200325.190041-14.jar" com.moedu.aital.web.poisonpill.Coordinator
子线程1 1 开启运行.
子线程1 2 开启运行.
子线程1 3 开启运行.
子线程1 4 开启运行.
子线程1 1 运行完成.
子线程1 5 开启运行.
子线程1 6 开启运行.
子线程1 4 运行完成.
子线程1 2 运行完成.
子线程1 3 运行完成.
子线程1 5 运行完成.
子线程1 7 开启运行.
子线程1 6 运行完成.
子线程1 7 运行完成.
子线程1 8 开启运行.
子线程1 9 开启运行.
子线程1 10 开启运行.
子线程1 8 运行完成.
子线程1 9 运行完成.
子线程1 10 运行完成.
所有子线程运行完