一个主线程下有多个子线程任务,主线程必须在100秒内将子线程执行的集合结果进行处理返回

面试题分类: Java一个主线程下有多个子线程任务,主线程必须在100秒内将子线程执行的集合结果进行处理返回
feng07202 管理员 asked 9月 ago

一个主线程下有多个子线程任务,主线程必须在100秒内将子线程执行的集合结果进行处理返回,子线程如果在100秒内没有执行完停止执行

FavoriteLoading添加本文到我的收藏
5 Answers
fingthinking 管理员 answered 9月 ago

通过Callable来写异步线程,并通过future的get(100000)进行判断,如果得不到结果,则返回空值。

FavoriteLoading添加本文到我的收藏
JackWang 管理员 answered 9月 ago

java.util.concurrent.ExecutorService.invokeAll(Collection<? extends Callable>, long, TimeUnit),当给定时间任务没有全部完成就自动cancel

FavoriteLoading添加本文到我的收藏
令仔很忙 管理员 answered 1月 ago

可以用CountDownLatch来设计,给CountDownLatch设置count的数量(子线程的数量),启动多个线程,new Thread(new Runnable()).start();
并设置CountDownLatch.await(100),当到达100s的时候,没有执行完的任务就会停止执行,返回结果走主线程。

FavoriteLoading添加本文到我的收藏
令仔很忙 管理员 answered 1月 ago

可以用CountDownLatch来设计,给CountDownLatch设置count的数量(子线程的数量),启动多个线程,new Thread(new Runnable()).start();
并设置CountDownLatch.await(100),当到达100s的时候,没有执行完的任务就会停止执行,返回结果走主线程。

FavoriteLoading添加本文到我的收藏
令仔很忙 管理员 answered 1月 ago

可以用CountDownLatch来设计,给CountDownLatch设置count的数量(子线程的数量),启动多个线程,new Thread(new Runnable()).start();
并设置CountDownLatch.await(100),当到达100s的时候,没有执行完的任务就会停止执行,返回结果走主线程。

FavoriteLoading添加本文到我的收藏

return top