Quartz job completed but the thread remains blocked(quartz定时任务一直处于堵塞状态)

         在项目中使用了quartz的分布式功能,两个节点协调运行定时任务,近期发现quartz的有个定时任务经常会一直处于blocked堵塞状态,后续一直都没有再触发,看日志也没任何错误信息,一直在纳闷。经过一系列的研究,发现定时任务的逻辑里是需要通过http请求外部系统的,使用的apache的httpclient框架,当时没有设置连接超时和读取超时时间,仔细看了httpclient框架的源码,底层调用socket的时候,可以设置超时时间,会一直堵塞等待数据的返回,导致整个线程都堵塞了。终于明白,其实定时任务时根本没有执行完毕的,只是线程一直被堵塞了,这个坑巨大啊。有使用http、ftp、socket等进行通信的,一定要设置超时时间,不然,就真的是出麻烦。

你可能感兴趣的:(java框架)