使用线程池提交一些任务,如何使得任务超过一个设定时间就自动终止

img
Task的内容是向外部接口发送请求,有时候响应时间过长,因此如果超过一分钟未响应,就直接关闭线程

java 定时器了解下
new Timer().schedule(new TimerTask() {

        @Override
        public void run() {
            // TODO Auto-generated method stub
            
        }
    }, 1000);

execute改成submit提交,获取一个Future接口,可以通过Future的get方法等待固定时间,如果还没完成的话就调用cancel方法

终止,有2个方法
1、主动:任务自己发现超时了,【或者发现有退出标志】,然后退出,
2、被动:被外部发现任务超时了,【强制】其退出。
从任何角度讲,方案1都是最安全的,除非你的任务,不会有任何一一致性问题,也不会造成垃圾,不会有破坏。

实现方案
1、主动
任务自己启动时设置个启动时间,然后开一个线程开始计数,时间到了就设置任务一个【超时】标记
任务主线程,要【在一切能判断的位置】判断这个【超时】标记,然后【主动】退出,包括清理垃圾,处理一致性问题等。

2、被动
循环判断每个任务线程的运行时间,发现其超时,则直接干掉 Thread.stop方法。 风险自负哦。

一些资料可以参考
https://blog.csdn.net/h183288132/article/details/51160996

调用外部接口,那不是可以设置超时时间吗?给所有任务设置统一的超时时间,任务结束,线程回收。