请教老师线程池问题

来源:3-2 增加线程

慕尼黑8163989

2023-01-19

老师好,我现在在生产上碰到一个问题,令我困惑. 我们创建一个定时调度的线程池.corePoolSize设置为2,代码如下.
ScheduledExecutorService service = Executors.newScheduledThreadPool(2);
service.scheduleAtFixedRate( “发送心跳” , 0, 5, TimeUnit.SECONDS);
service.scheduleAtFixedRate( “工作1” , 0, 3, TimeUnit.SECONDS);
service.scheduleAtFixedRate( “工作2” , 0, 180, TimeUnit.SECONDS);
在生产上会偶发(有时大概两个月发生一次)如下情况. 通过日志会发现"发送心跳"任务在某个时刻会突然停止工作,后面再也不会被调起执行了.
而"工作1"和"工作2",这两个任务却会一直执行下去.不知道为什么会出现这种情况.老师能帮忙指教指教.谢谢.
补充: “发送心跳”,“工作1”,"工作2"这三个任务代码内,都try catch了.

写回答

1回答

悟空

2023-01-25

不好意思,这个问题我也无法解答,按照描述来看,我也认为不应该出现停止“发送心跳”的情况。

0
2
悟空
回复
慕尼黑8163989
看来是由于内存不足导致的,学到了,谢谢分享。
2023-02-03
共2条回复

深度解密Java并发工具,精通JUC,成为并发多面手

JUC全方位讲解,构建并发工具类知识体系

1599 学习 · 573 问题

查看课程