[V630] refactor: 增加坐标回调处理的线程池;
refactor: 坐标订阅降频(速度或view更新等变为3Hz,坐标围栏判断是否到站变为5Hz);
This commit is contained in:
@@ -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:非核心线程闲置时间超时时长
|
||||
* unit:keepAliveTime的单位
|
||||
* 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);
|
||||
}
|
||||
}
|
||||
}
|
||||
|
||||
|
||||
|
||||
Reference in New Issue
Block a user