0

I'm beginner in java programming, I wrote basic server which is in endless loop and starts new Threads as shown below.

while (true) {
                DatagramPacket receivePacket = new DatagramPacket(receive, receive.length);
                socket.receive(receivePacket);
                username = new String(data(receive));
                Thread t = new Thread() {
                @Override
                public void run() {
                    try {
                        clientHandler(receivePacket);
                    } catch (IOException | InterruptedException e) {
                        e.printStackTrace();
                    }
                }
            };
            t.start();
            threads.add(t);
            t.setName(username);
        }

Now my goal is to call method to getThreadList when I type anything in my console window. I've tried Scanner and System.in.read() but they stop whole loop, waiting for my input. Is there any solution to this?

fejker
  • 3
  • 3
  • Does this answer your question? [Java key listener in Commandline](https://stackoverflow.com/questions/4005574/java-key-listener-in-commandline) – Sergei Sirik Apr 30 '20 at 23:33
  • @SergeiSirik Reader also waits for input, denying every next connections – fejker Apr 30 '20 at 23:41
  • 1
    Separate thread for a reader? And implementing something like ActionListner in Swing, [Observer Pattern](https://www.baeldung.com/java-observer-pattern) ? Send events to the server thread only when you get something in the reader thread? – Sergei Sirik Apr 30 '20 at 23:45
  • @SergeiSirik I will try that, but isn't there any less complicated way? – fejker Apr 30 '20 at 23:51

0 Answers0