0

我想知道是否可以为听众提供优先权。

我正在与套接字通信的程序上创建一个系统托盘。

一旦我调用 ServerSocket.accept() 方法,该方法将等待套接字连接,我的系统托盘就会停止侦听,直到接受套接字为止。

有没有办法解决这个问题?

系统托盘有调试开/关和关闭程序等选项,因此它必须与程序通信,并且在侦听中具有最高优先级。

提前谢谢!

编辑:这是一些代码。

public class Start {

/**
 * Main method.
 *
 * @param args Arguments given in the commandline.
 */
public static void main(String[] args) {
    if (args.length > 0) {
        if (args[0].equals("-v")) {
            Debugger.setDebug(true);
            Debugger.showMessage("DEBUG: ON");
        }
    } else {
        System.out.println("DEBUG: OFF");
        Debugger.setDebug(false);
    }

    if (SystemTrayCreator.canRead()) {
        SystemTrayCreator stc = new SystemTrayCreator();
        new Thread(stc).start();
    }
    Connector c = new Connector();
    new Thread(c).start();

}
}

public class Connector implements Runnable{


/** Creates a Connector-object.
 * 
 */
public Connector(){
}
static Timer t = new Timer(100, new ActionListener() {

    @Override
    public void actionPerformed(ActionEvent e) {
        doJob();
        t.stop();
    }
});

/** Activates the connector.
 * 
 */
@Override
public void run() {
    while (true) {
        t.start();
    }
}

public class SystemTrayCreator implements Runnable{


/**
 * Creates a systemtray with an icon.
 *
 */
@Override
public void run() {
    //Check whether the SystemTray is supported
    if (!SystemTray.isSupported()) {
        Debugger.showMessage("SystemTray is not supported");
        return;
    }

希望这可以帮助。

4

1 回答 1

0

如果您想一次做不止一件事,请使用线程。

在您的情况下,我将有一个缓存的线程池,即 Executors.newCachedThreadPool() 它首先有一个接受连接的任务,并且还有一个读取每个连接的任务(因此您可以在处理连接时接受更多连接)

于 2012-05-02T08:09:38.630 回答