Multiple clients - java socket server

I wonder how to change my program so that several clients can connect.

The server is to take the numbers from the clients and calculate the average and then return the value.

Is it enough to make a list to write down the numbers and then calculate the mean or is there any other way to solve this problem?

import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.Socket;
import java.net.UnknownHostException;
import java.util.Scanner;

public class Client {

    private final static String HOST = "localhost";
    private final static int PORT = 2300;
    private final static Scanner SCANNER = new Scanner(System.in);

    private static Socket socket;
    private static PrintWriter out;
    private static BufferedReader in;

    private boolean isRunning;

    public Client() {
        isRunning = true;
    }

    public void makeRequests() {
        while (isRunning) {
            try {
                socket = new Socket(HOST, PORT);
                out = new PrintWriter(socket.getOutputStream(), true);
                in = new BufferedReader(new InputStreamReader(socket.getInputStream()));

                System.out.println("Input number: ");
                int requestedNumber = SCANNER.nextInt();
                out.println(requestedNumber);
                String response = in.readLine();

                System.out.println("Response: " + response);

                if (response.equals("The number is correct!")) {
                    System.out.println("Closing the client.");
                    System.exit(1);
                }
            } catch (UnknownHostException e) {
                System.out.println("Could not find host.");
                e.printStackTrace();
            } catch (IOException e) {
                System.out.println("Could not get a response.");
                e.printStackTrace();
            }
        }
    }

    public static void main(String[] args) {
        Client client = new Client();
        client.makeRequests();
    }
}
import java.io.BufferedReader;
import java.io.IOException;
import java.io.InputStreamReader;
import java.io.PrintWriter;
import java.net.InetSocketAddress;
import java.net.ServerSocket;
import java.net.Socket;
import java.util.Random;

public class Server extends Thread {

    private String serverName;
    private ServerSocket ss;
    private BufferedReader in;
    private PrintWriter out;

    private int randomNumber;

    private volatile boolean isRunning;

    public Server(String serverName, ServerSocket ss) {
        this.serverName = serverName;
        this.ss = ss;
        System.out.println("Server started: " + serverName + "listening at port: " + ss.getLocalPort());

        isRunning = true;
        randomNumber = generateRandomNumber(10);
        start(); // Uruchomienie wątku
    }

    public int generateRandomNumber(int range) {
        return new Random().nextInt(range);
    }

    public void run() {
        while (isRunning) {
            try {
                Socket connection = ss.accept();

                System.out.println("Connection established on server: " + serverName);

                serviceRequests(connection);
            } catch (IOException e) {
                System.out.println("Connection closed.");
                e.printStackTrace();
            }
        }

        try {
            ss.close();
            System.out.println("Connection closed.");
        } catch (Exception ex) {
            ex.printStackTrace();
        }
    }


    private void serviceRequests(Socket connection) throws IOException {
        in = new BufferedReader(new InputStreamReader(connection.getInputStream()));
        out = new PrintWriter(connection.getOutputStream(), true);

        try {
            int requestNumber = Integer.parseInt(in.readLine());

            if (requestNumber > this.randomNumber) {
                System.out.println("The client guessed: " + requestNumber + ". Too high");
                makeResponse("too high.");
            } else if (requestNumber < this.randomNumber) {
                System.out.println("The client guessed: " + requestNumber + ". Too low.");
                makeResponse("too low.");
            } else {
                System.out.println("The client guessed: " + requestNumber);
                System.out.println("CONGRATULATIONS, CORRECT!");
                makeResponse("correct!");
                ss.close();
            }
        } catch (NumberFormatException e) {
            System.out.println("Could not parse request to integer.");
        }
    }

    private void makeResponse(String message) throws IOException {
        out.println("The number is " + message);
    }

    public static void main(String[] args) {
        try {
            InetSocketAddress isa = new InetSocketAddress("localhost", 2300);
            ServerSocket ss = new ServerSocket();
            ss.bind(isa);

            new Server("test", ss);
        } catch (IOException e) {
            System.out.println("Could not create server socket.");
            e.printStackTrace();
        }
    }
}