[V630] refactor: 增加坐标回调处理的线程池;

refactor: 坐标订阅降频(速度或view更新等变为3Hz,坐标围栏判断是否到站变为5Hz);
This commit is contained in:
aibingbing
2024-03-05 19:44:35 +08:00
parent 2489bedce4
commit 659daf74b9
18 changed files with 155 additions and 78 deletions

View File

@@ -134,6 +134,49 @@ public class OCHThreadPoolManager<T> {
}
}
//======================================================================================
//=============== 位置坐标回调处理线程池 ==========
//======================================================================================
/**
* 线程池的对象(高频坐标处理, keepAliveTime=30s, 等待队列容量=200, 异常处理机制=丢弃队列最前面的任务)
*/
private ThreadPoolExecutor locationExecutor;
/**
* 开启一个无返回结果的线程
*/
public void locationExecute(Runnable r) {
if (locationExecutor == null) {
/*
* corePoolSize:核心线程数
* maximumPoolSize线程池所容纳最大线程数(workQueue队列满了之后才开启)
* keepAliveTime非核心线程闲置时间超时时长
* unitkeepAliveTime的单位
* workQueue等待队列存储还未执行的任务
* threadFactory线程创建的工厂
* handler异常处理机制
*
*/
locationExecutor = new ThreadPoolExecutor(CPU_COUNT + 1, CPU_COUNT * 2 + 1,
30, TimeUnit.SECONDS, new ArrayBlockingQueue<>(200),
Executors.defaultThreadFactory(), new ThreadPoolExecutor.DiscardOldestPolicy());
}
// 把一个任务丢到了线程池中
try {
locationExecutor.execute(r);
} catch (Exception e) {
e.printStackTrace();
}
}
/**
* 把任务移除等待队列
*/
public void locationCancel(Runnable r) {
if (r != null) {
locationExecutor.getQueue().remove(r);
}
}
}