,Job就正常执行了;后来第二天上去看的时候居然又停止了, 但是Job的JVM是还在的,并没有挂掉,就是没有日志,看起来就是被阻塞了一样;
这个时候又把生成环境重启让他先正常执行,然后立马去测试环境看看能不能重现...连接池的连接一直没有回收回去,后面的线程又一直在调用这个doGet方法;
但是又获取不到连接,所以就一直阻塞在哪里,直到连接超时HttpClient内部三个超时时间的区别
然后myAsync 这个线程池的线程也是有限的...可以看到有很多的80连接端口处于CLOSE_WAIT状态的; CLOSE_WAIT状态的原因与解决方法
问题的原因找到了,那么解决的方法就很简单了,把HttpClient的连接的流关闭掉就行了
HttpEntity...CallerRunsPolicy :它直接在 execute 方法的调用线程中运行被拒绝的任务;如果执行程序已关闭,则会丢弃该任务
就是说线程池的队列也满了,就会触发丢弃策略,CallerRunsPolicy...是用调用线程池的那个线程来执行;
ThreadPoolExecutor里面4种拒绝策略(
为了不让他们互相影响,改下线程池的丢弃策略就行了
Spring Boot 定时任务单线程和多线程