2
我需要單元測試跨線程工作的一些功能,爲此我需要保證兩個作業在不同的線程上運行。是否有一個ExecutorService爲每個任務創建一個新的線程?
使用Executors.newCachedThreadPool()
引入了競爭條件,因爲測試可能會或可能不會使用緩存的線程池。
是否有一個ExecutorService
總是使用新的線程?
我需要單元測試跨線程工作的一些功能,爲此我需要保證兩個作業在不同的線程上運行。是否有一個ExecutorService爲每個任務創建一個新的線程?
使用Executors.newCachedThreadPool()
引入了競爭條件,因爲測試可能會或可能不會使用緩存的線程池。
是否有一個ExecutorService
總是使用新的線程?
使用java.util.concurrent.ThreadPoolExecutor
和corePoolSize
的0
和keepAliveTime
的0
。這將使新任務產生一個新線程,線程將在任務終止後立即終止。
例如:
final ExecutorService executorService = new ThreadPoolExecutor(
0, 2, 0, TimeUnit.SECONDS, new SynchronousQueue<>());
executorService.submit(task1);
executorService.submit(task2);