サーバーソケット、つまりサーバー機能をカプセル化するクラスがあります。
クラスのインターフェースは次のとおりです。
class Server{
public void start();
public void stop();
}
開始は次のとおりです。
public void start(){
ExecutorService tp = Executors.newSingleThreadExecutor();
while(!stop){
try {
Socket clientConnection = serverSocket.accept();
tp.execute(new ClientProcessor(clientConnection));
} catch (IOException e) {
stop = true;
}
}
ブロックせずにこれを開始する方法を理解するのに苦労していmain
ます。
つまり、バックグラウンド スレッドからサーバーを起動する必要があるため、次のことを考えました。
ExecutorService tp2 = Executors.newSingleThreadExecutor();
tp.submit(new Runnable(){
public void run(){
Server s = new Server();
s.start();
}
});
}
しかし、サーバーが起動して例外をスローしなかったことを知りたいのです。どうやってやるの?つまり、バックグラウンド サーバーが正常に起動し、残りのアクションを続行できることをスレッド
から知るにはどうすればよいでしょうか?main