Java - Как вызвать функцию, которая имеет бесконечный цикл выполнения несколько раз с различными объектами класса? - PullRequest
0 голосов
/ 11 июля 2019

У меня есть класс (скажем, UDPData), у которого есть метод (скажем, getData()).Эта функция имеет цикл while, работающий в бесконечном цикле, чтобы продолжать слушать порт UDP.Теперь я хочу выполнить этот метод с использованием различных объектов класса (UDPData), но первый вызов метода с obj1 задерживается, и дальнейшие вызовы с использованием других объектов не выполняются.

Я хочу вызывать этот метод несколько раз, чтобы не застревать и не удерживать другие вызовы.

Пример кода:

class UDPData {
    public String getData() {
        while(true) {
            // Code Goes here...
        }
    }
}

// Method Calls like this
UDPData obj1 = new UDPData();
obj1.getData();

UDPData obj2 = new UDPData();
obj2.getData();

UDPData obj3 = new UDPData();
obj3.getData();

Пример кода действительно поможет.

1 Ответ

0 голосов
/ 11 июля 2019

Клиент / сервер работает (= кодируется) немного по-другому.

Сервер будет делать что-то очень расплывчато, например:

ServerSocket serverSocket = new ServerSocket(portNumber);
for (;;) {
    Socket clientSocket = serverSocket.accept(); // Await a client request
    executorService.startWorker(clientSocket);
}

(Этот код взят из неПример UDP; вы, вероятно, уже используете DatagramSocket для UDP.)

Это цикл, ожидающий UDP-сообщение и затем отправляющий его в новый поток.

Это поддерживает работу сервера.

Однако все асинхронно, как и сам UDP.Рабочие должны создавать большие конструкции данных с помощью очередей и т. Д.

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...