有 Java 编程相关的问题?

你可以在下面搜索框中键入要查询的问题!

具有优先级等待列表的java ArrayBlockingQueue

我目前有一个Spring dispatcher,它确保基于有界队列的各种并发限制策略

基本上,处理多个请求类型,一些内存昂贵,另一些内存较低,而恰好命中内存昂贵任务的请求线程将令牌放在有界阻塞队列(ArrayBlockingQueue)中,因此只有N个请求类型最终实际运行,而另一个请求类型则等待

现在,等待列表由ReentrantLock在内部管理,ReentrantLock反过来利用AbstractQueuedLongSynchronizer中的条件实现基金,该基金使用链表,当令牌从队列中移除时,链表会通知等待时间最长的线程

现在,我需要一个不同的行为,以便该条件维护的列表也按用户定义的优先级排序(直接排序,低优先级请求不需要反饥饿措施)

不幸的是,所讨论的类有一堵“最终”声明的墙,这使得很难注入这种看似微小的行为变化

是否有任何并发数据结构提供我正在寻找的行为,或者允许定制? 或者,建议在不从头重写ArrayBlockinQueue/ReentrantLock/Condition的情况下实现它

注意:如果要在等待列表中寻找具有优先级的有界阻塞队列,则需要重新设计整个应用程序的其他方法、辅助执行线程池等都是不可行的(时间和材料限制)


共 (0) 个答案