diff --git a/src/blatt2/ServerStop.java b/src/blatt2/ServerStop.java index 8ce6b6e..6548ab3 100644 --- a/src/blatt2/ServerStop.java +++ b/src/blatt2/ServerStop.java @@ -1,13 +1,17 @@ package blatt2; +import java.net.InetSocketAddress; import javax.swing.JOptionPane; +import blatt1.ClientEndpoint; public final class ServerStop implements Runnable { private ThreadPooledPrimeServer server; + private ClientEndpoint endpoint; public ServerStop(ThreadPooledPrimeServer server) { this.server = server; + endpoint = new ClientEndpoint(); } @Override @@ -15,6 +19,7 @@ public void run() { JOptionPane.showMessageDialog(null, "Press OK to stop server."); server.exit = true; + endpoint.send(new InetSocketAddress("localhost", 4711), 1); } } diff --git a/src/blatt2/ThreadPooledPrimeServer.java b/src/blatt2/ThreadPooledPrimeServer.java index 6b6cd62..116b0c0 100644 --- a/src/blatt2/ThreadPooledPrimeServer.java +++ b/src/blatt2/ThreadPooledPrimeServer.java @@ -8,6 +8,7 @@ public final class ThreadPooledPrimeServer { private ExecutorService executor; private final ServerEndpoint endpoint; + public volatile boolean exit; private static final int MAX_THREADS = 2; @@ -24,9 +25,11 @@ void run() { new Thread(new ServerStop(this)).start(); - while (!exit) + while (true) { ServerEndpoint.Request request = endpoint.blockingReceive(); + if (exit) + break; PrimeCalculator calc = new PrimeCalculator(endpoint, request); executor.execute(calc); }