有什么方法可以让事件在 Java 中带有变量?里面的例子

Is there any way to have events with a variable in Java? Example inside

比如说,我有一个包装 Queue 对象的 SystemQueue class。我使用 systemQueue.add(随便)添加到这个队列中,并且我有一个不同的对象,它是一个检查队列的 Runnable,如果它不为空,则从队列中取出并在其代码中使用 "whatever"。除了像

这样的 运行 中有一个无限循环之外,还有什么办法可以做到这一点
    run(){
        while(true){
            if(!systemQueue.isEmpty()){
                  todo
             }
       }
   }

并永远运行? 我要问的是,如何在 java?

中使用基于事件的编码进行编码

有什么方法可以将 eventListener 添加到 SystemQueue 中的队列中,如果队列发生变化,调用 SystemExecutor 并让它 运行?

Queue 本身不提供该选项。不过,您可以实现自己的 listener/event 对。

事件:

public class SystemEvent extends java.util.EventObject{
    public SystemEvent(SystemQueue src){
        super(src);
    }

    public SystemQueue getSource(){
         return (SystemQueue) super.getSource();
    }
}

听众:

public interface SystemListener extends java.util.EventListener{
    public void eventQueued(SystemEvent e);
}

在系统队列中:

ArrayList<SystemListener> listeners = new ArrayList<>();

protected void fireEventQueued(){
    SystemEvent e = new SystemEvent(this);

    listeners.forEach(l -> l.eventQueued(e));
}

public void addSystemListener(SystemListener l){
     listeners.add(l);
}

public void add(something){
    //add something
    fireEventQueued();
}

现在您需要做的就是让 SystemExecutor 实现 SystemListener 并将实例添加为侦听器。