final String namingPattern = "_newFixedThreadPool";
final BasicThreadFactory.Builder builder = new BasicThreadFactory.Builder();
final BasicThreadFactory basicThreadFactory = builder.namingPattern(namingPattern).daemon(true).build();
final ExecutorService executorService = Executors.newFixedThreadPool(2, basicThreadFactory);
IntStream.iterate(0, i -> i + 1).limit(5).forEach(t -> executorService.execute(() -> {
// simulate a random time-consuming code
try {
Thread.sleep(new Random().nextInt(100) + 1);
} catch (Exception e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName() + ": " + t);
}));
executorService.awaitTermination(200l, TimeUnit.MILLISECONDS);
executorService.shutdown();
Output:
_newFixedThreadPool: 1
_newFixedThreadPool: 0
_newFixedThreadPool: 2
_newFixedThreadPool: 4
_newFixedThreadPool: 3