在做mybatis
的多个线程修改内容时候的遇到的问题;
主线程执行完毕之后,子线程全部自动被杀死!!!
验证测试:
@Test
public void multiTheadUpdate() {
for(int i=0;i<10000;i++){
int finalI = i;
new Thread(()->{
try {
Thread.sleep(100);
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(finalI);
}).start();
}
System.out.println("主线程结束");
}
运行结果:
8549
8546
8543
8542
8541
8540
8539
9126
主线程结束
很多9000都没有被输出,说明主线程一停,所有线程都停掉了,即使t.setDaemon(false)
也不行;
解决方案1:可能不太好,但是也是解决燃眉之急,在src
下自己建立测试类测试;
解决方案2:使用countDownLatch
,当子线程执行完毕之后,再关闭主线程java多线程(十八)CountDownLatch