Как прочитать объект из потока

117
19 января 2022, 16:10

Есть задание: Многопоточный клиент-сервер.

На сервере запущено два потока, один читает, другой отправляет сообщения.

Читающий поток сохраняет сообщения в блокирующую очередь.

Никак не получается понять как можно сохранить обьект сообщения в эту очередь?

public class Server implements Serializable  {
    public static final int PORT = 8099;
    public static void main(String[] args) throws IOException {
        ArrayBlockingQueue<Message> messagesPool;
        ExecutorService cachedPool = Executors.newCachedThreadPool();
        Set<Socket> clients = null;
        ServerSocket serverSocket = new ServerSocket(PORT);
        System.out.println("Сервер запущен");
        ObjectInputStream objectInputStream;
        ObjectOutputStream objectOutputStream;
        while (!serverSocket.isClosed()) {
            Socket clientSocket = serverSocket.accept();
            System.out.print((clientSocket.isConnected() ? "Соединение установлено " : " Не удалось соедениться"));
            assert false;
            boolean added = clients.add(clientSocket);
            if (added) System.out.println(clientSocket + " Добавлен !");
            if (clientSocket.isClosed()) {
                System.out.println(clientSocket + " отключился!");
                clients.remove(clientSocket);
            }
        }
    }
}
class ServerReader implements Runnable, Serializable  {
    ServerSocket serverSocket;
    ArrayBlockingQueue<Message> messagesPool;
    ObjectInputStream objectInputStream;
    public ServerReader(ServerSocket serverSocket, ArrayBlockingQueue<Message> messagesPool, ObjectInputStream objectInputStream) {
        this.serverSocket = serverSocket;
        this.messagesPool = messagesPool;
        this.objectInputStream = objectInputStream;
    }
    @Override
    public void run() {
        messagesPool = new ArrayBlockingQueue<>(100);
        while(!serverSocket.isClosed()){
//            непонятно.
        }
    }
}

Извиняюсь, если затронул большие умы таким вопросом, только учусь.

READ ALSO
Как собрать javaFx проект

Как собрать javaFx проект

когда достиг финальной части своего задания столкнулся с такой проблемой, что не могу собрать проект в полноценный jar файл, выдаёт ошибку...

90
Как объединить ArrayList из разных классов?

Как объединить ArrayList из разных классов?

У меня есть класс Company и 3 дочерних класса, которые наследуют методы из родительского класса, как получить 1 ArrayList со всеми значениями зарплат...

99
Java Spring добавление временной строки в бд

Java Spring добавление временной строки в бд

Существует ли в Spring Аннотация, которая позволяет при занесении строки в таблицу удалить её через время? например, суткиИ если таковой нет,...

83