Scheduled同一线程池执行多个不同线程漏掉线程不执行

文章描述了一个问题,即在本地A线程和B线程都能正常执行定时任务的情况下,线上环境A线程不执行,B线程执行。通过增加一个独立的线程池,问题得到解决。作者推测可能是由于线程阻塞导致的,通过资源隔离解决了并发问题。
摘要由CSDN通过智能技术生成
记录下列定时A线程不执行情况
           public class ThreadPoolUtils {	
                    public static ScheduledThreadPoolExecutor 
                    queryOrderPool = new ScheduledThreadPoolExecutor(100);
            }




           public class QueryOrderTask {

            @Scheduled(fixedRate = 120000)
 	        public void execute() {
               ThreadPoolUtils.queryOrderPool.execute(() -> {
				A线程
			});
            	}
            @Scheduled(fixedRate = 150000)
 	        public void execute2() {
              ThreadPoolUtils.queryOrderPool.execute(() -> {
				B线程
			});
         }

        }

在本地A、B线程都会执行,线上A不执行,B执行。

此处猜想应是线程发生阻塞。

新加一个线程池,,问题解决

           public class ThreadPoolUtils {	
                    public static ScheduledThreadPoolExecutor 
                    queryOrderPool = new ScheduledThreadPoolExecutor(100);
	private static ScheduledThreadPoolExecutor queryOrder2Pool = new ScheduledThreadPoolExecutor(100);

            }




           public class QueryOrderTask {

            @Scheduled(fixedRate = 120000)
 	        public void execute() {
               ThreadPoolUtils.queryOrderPool.execute(() -> {
				A线程
			});
            	}
            @Scheduled(fixedRate = 150000)
 	        public void execute2() {
              ThreadPoolUtils.queryOrder2Pool.execute(() -> {
				B线程
			});
         }

        }
评论 1
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值