我想知道是否有可能给听众带来骚动。
我正在一个与套接字通信的程序上创建一个系统托盘。
一旦我调用ServerSocket.accept()方法,它将等待套接字连接, 我的系统托盘停止侦听,直到接受套接字。
有什么方法可以解决这个问题吗?
systemtray具有调试开/关和关闭程序等选项,因此它必须与程序通信,并且在侦听时也具有最高优先级。
提前Thanx!
编辑: 这是一些代码。
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;
}
希望这有帮助。
答案 0 :(得分:0)
如果您想一次做多件事,请使用线程。
在你的情况下,我会有一个缓存的线程池,即Executors.newCachedThreadPool(),它首先有一个接受连接的任务,还有一个任务来读取每个连接(所以你可以在处理连接时接受更多的连接)< / p>