リスナーを優先できないかと考えていました。
ソケットと通信するプログラムでシステムトレイを作成しています。
ソケットの接続を待機する 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;
}
お役に立てれば。