Java 检查sun.misc.Queue的大小
我的项目通过扩展Java 检查sun.misc.Queue的大小,java,queue,Java,Queue,我的项目通过扩展sun.misc.Queue使用队列,我需要每秒知道这个队列的大小 public String toString() { int count = 0; Enumeration er = null; synchronized (this) { er = myQ.elements(); while (er.hasMoreElements()) { count++;
sun.misc.Queue
使用队列,我需要每秒知道这个队列的大小
public String toString()
{
int count = 0;
Enumeration er = null;
synchronized (this)
{
er = myQ.elements();
while (er.hasMoreElements())
{
count++;
}
}
return "" + count ;
}
Assun.misc.Queue不提供size
方法API。我试图将toString
方法添加到我的类中扩展sun.misc.queue,并在专门用于每秒打印队列的seprate线程中调用toString
public String toString()
{
int count = 0;
Enumeration er = null;
synchronized (this)
{
er = myQ.elements();
while (er.hasMoreElements())
{
count++;
}
}
return "" + count ;
}
myQ是此类中的字段
但这也不管用。在我添加这段代码之后,整个系统就可以运行了
任何人都可以帮助识别我是否做错了什么。使用标准java队列(
LinkedList
就是为了能够使用它作为出列)。它们提供了一种尺寸方法
或者,您可以跳过各种添加/删除方法,在内部保留一个计数器,以便始终知道大小。不过,您最好只使用适合工作的工具。免责声明:除非必须,否则不要使用反射
Queue q = new Queue();
Field f = Queue.class.getDeclaredField("length");
f.setAccessible(true);
int size = f.getInt(q);
System.out.println(size);
我又读了一遍你的问题。。。现在我很生你的气,因为你只写了一句“掷硬币”。Stacktrace或GTFO。您为什么不使用“官方”jdk队列之一(都有
size
方法)?此代码大约有5-6年历史,现在无法更改队列。此代码大约有5-6年历史,现在无法更改队列。我想到了第二个选择,但想到了第一个问题,我想可能是我做错了什么。我的意思是,系统行为不是预期的,什么是行为,我不能在这里解释,因为这样我就必须解释域。