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年历史,现在无法更改队列。我想到了第二个选择,但想到了第一个问题,我想可能是我做错了什么。我的意思是,系统行为不是预期的,什么是行为,我不能在这里解释,因为这样我就必须解释域。