记录下列定时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线程
});
}
}