ReentrantLock的使用
来源:互联网 发布:淘宝怎么改登录名 编辑:程序博客网 时间:2024/04/28 22:14
// 用于重启时,保证FillAutoAllotFlowTaskLogQueueThread类中restartInit方法与run方法的执行顺序
private static final ReentrantLock initLock = new ReentrantLock();
/**
* 将工作流自动处理任务线程和填充消费队列线程加入到线程池
*/
public void autoTaskThreadExecute() {
try {
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(THREAD_MAX_NUM);
askLogQueueThread fillAutoQueueThread = new FlowTaskLogQueueThread();
initLock.lock();
try {
fillAutoQueueThread .restartInit();
} finally {
initLock.unlock();
}
initLock.lock();
try {
fixedThreadPool.execute(fillAutoAllotFlowTaskLogQueueThread);
} finally {
initLock.unlock();
}
} catch (Exception e) {
logger.info(e);
}
private static final ReentrantLock initLock = new ReentrantLock();
/**
* 将工作流自动处理任务线程和填充消费队列线程加入到线程池
*/
public void autoTaskThreadExecute() {
try {
ExecutorService fixedThreadPool = Executors.newFixedThreadPool(THREAD_MAX_NUM);
askLogQueueThread fillAutoQueueThread = new FlowTaskLogQueueThread();
initLock.lock();
try {
fillAutoQueueThread .restartInit();
} finally {
initLock.unlock();
}
initLock.lock();
try {
fixedThreadPool.execute(fillAutoAllotFlowTaskLogQueueThread);
} finally {
initLock.unlock();
}
} catch (Exception e) {
logger.info(e);
}
}
// 员工工号对应的锁
private static ConcurrentHashMap<String, ReentrantLock> staffIdToLock = new ConcurrentHashMap<String, ReentrantLock>();
/**
* 根据员工工号获取锁
* @param staffId 工号
* @return 该员工对应的锁
*/
private ReentrantLock getLockByStaffId(String staffId) {
if (!staffIdToLock.containsKey(staffId)) {
staffIdToLock.put(staffId, new ReentrantLock());
}
return staffIdToLock.get(staffId);
}
0 0
- ReentrantLock的使用
- ReentrantLock的使用
- ReentrantLock的使用
- ReentrantLock的使用
- ReentrantLock的使用
- ReentrantLock的使用
- ReentrantLock的使用
- Lock的使用---ReentrantLock
- ReentrantLock可重入锁的使用场景
- ReentrantLock可重入锁的使用场景
- ReentrantLock可重入锁的使用场景
- ReentrantLock可重入锁的使用场景
- ReentrantLock可重入锁的使用场景
- ReentrantLock可重入锁的使用场景
- ReentrantLock 和 Condition的使用
- ReentrantLock可重入锁的使用场景
- ReentrantLock可重入锁的使用场景
- ReentrantLock可重入锁的使用场景
- 跨域访问-预请求及跨域常见问题
- L2-011. 玩转二叉树
- iOS开发中,万能跳转
- 解决 iphone app新建工程启动后控制器上下各有一块黑边的问题
- 【问题处理】Mac上React Native的fetch请求报错Network request failed解决办法
- ReentrantLock的使用
- 自定义一个类似listView和recylceView的需要setAdapter的控件
- SP 预警状态设置
- 个人收藏的JS方法
- Mac 开发中设置 关闭 以及最小化 最大化按钮事件处理
- PHP 如何获取两个时间之间的年和月份及间隔天数 PHP两个日期之间的所有日期
- 任务:手机信息页面
- 函数调用栈打印
- JS中的函数