FLINK-17558, we introduce Executors#newCachedThreadPool to create dedicated thread pool for TaskManager io. However, it could not work as expected.
The root cause is about the following constructor of ThreadPoolExecutor. Only when the workQueue is full, new thread will be started then. So if we set a LinkedBlockingQueue with Integer.MAX_VALUE capacity, only one thread will be started. It never grows up.