Java编程中,并行任务,提高了系统资源利用率,提高效率。多线程协作,线程等待的场景时常有,实际使用中需要避免线程无休止的等待,避免用户等待时间过长。
简单的一个案例:
if (!transTimeQueryFuture.isDone()) {
log.info("等待产品实际数据日期查询线程执行结束...");
long waitQueryStartTime = System.currentTimeMillis();
while (true) {
if (transTimeQueryFuture.isDone()) {
break;
}
long waitQueryEndTIme = System.currentTimeMillis();
if (waitQueryEndTIme - waitQueryStartTime > 10000) {
log.error("等待时间过长,中断线程,停止产品数据日期查询任务");
transTimeQueryFuture.cancel(true);
break;
}
}
}
关于Future.cancel()的方法介绍,前人已经总结的很好,参考博客:https://blog.csdn.net/StefanTimber/article/details/73823689