如果Future.get(timeout)超时,线程会继续运行吗?
如果线程因某些IO等原因继续运行并被阻塞,那么当线程池满时,就不能提交新任务了,这意味着线程池会被卡住,因为池中所有线程都被阻塞了,对吗?
ExecutorService executor = Executors.newFixedThreadPool(n);
Callable<Object> task = new Callable<Object>() {
public Object call() {
//...
}
}
Future<Object> future = executor.submit(task);
try {
Object result = future.get(5, TimeUnit.SECONDS);
} catch (TimeoutException ex) {
// handle the timeout
}
如果线程因某些IO等原因继续运行并被阻塞,那么当线程池满时,就不能提交新任务了,这意味着线程池会被卡住,因为池中所有线程都被阻塞了,对吗?