@RunWith(SpringJUnit4ClassRunner.class)@WebAppConfiguration@Transactional@SpringApplicationConfiguration(Application.class)public class Main {
static Log logger = LogFactory.getLog(Main.class);
@Test
public void test() {
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(11);
for (int i = 0; i < 10; i++) {
fixedThreadPool.execute(new Runnable() {
@Override
public void run() {
System.out.println("a");
}
});
}
System.out.println("b");
}
為什么輸出結(jié)果是ab,而不是10個(gè)a和1個(gè)b
1 回答

慕碼人8056858
TA貢獻(xiàn)1803條經(jīng)驗(yàn) 獲得超6個(gè)贊
單元測試運(yùn)行結(jié)束后會強(qiáng)制退出進(jìn)程。所以剩下的線程并不會執(zhí)行。你可以使用下面的示例等待所有任務(wù)執(zhí)行完成。
ExecutorService executorService = Executors.newFixedThreadPool(11);
CountDownLatch latch = new CountDownLatch(10);
for (int i = 0; i < 10; i++) {
final int v = i;
executorService.execute(() -> {
latch.countDown();
System.out.println(v + " - a");
});
}
System.out.println("b");
try {
// 等待所有任務(wù)結(jié)束
latch.await();
} catch (InterruptedException e) {
e.printStackTrace();
}
添加回答
舉報(bào)
0/150
提交
取消