我在Java 1.6中使用平台MBeans服务器,在OSGi容器中运行.
主要使用MBean作为统计计数器和事件.它们的实现在一个包中,但它们在其他几个包中实例化.每个MBean都使用平台MBean服务器自行注册.
问题是当我通过JMX附加并查询MBean时,我只获得当前注册的那些,并且在它们被实例化之前它们不会被注册(因为静态类在第一次访问之前不存在,或者因为捆绑还没有开始,或者计数器深入一些逻辑,直到第一次使用才会存在)
我需要一些在MBean服务器中订阅"注册"事件的方法.或者确定何时向服务器添加新MBean的其他方法.检测已删除的MBean将是一个额外的好处,但不是必需的.
我得到的唯一解决方案基本上是一个每隔5秒轮询一次服务器的线程,并将结果与保存的MBean列表进行比较,这非常难看.
我需要一个非常快速(插入,删除,包含)高度并发列表,可以使用比较器/可比较进行排序.
现有的ConcurrentSkipListSet是理想的,如果它是一个列表而不是一个集合.我需要插入多个与数据结构相同的项.
我目前正在考虑使用LinkedDeque,如果我找不到更好的东西,但该结构比高争用的跳转列表慢得多.
有什么建议?
编辑:我真正需要的,最低限度,是使用compareTo排序的东西,可以同时插入并可以使用对象标识删除/获取项目.注释中提到的所有其他并发要求仍然适用.