Как освободить инициатора события?

87
14 июля 2021, 00:30

уважаемое сообщество!

У меня вопрос касаемый custom events в java. В моей программе есть слушатель udp сообщений, который реализован следующим образом:

public void run() {
    DatagramPacket receivedPacket;
    byte[] receivedData = new byte[1024];
    try {
        DatagramSocket serverSocket = new DatagramSocket(port);
        while(true)
        {
            Arrays.fill(receivedData, (byte)0);
            receivedPacket = new DatagramPacket(receivedData, receivedData.length);
            serverSocket.receive(receivedPacket);
            for (udpMessageCollector mc:udpMessageCollectors
                 ) {
                mc.udpMessageReceived(receivedPacket);
            }
        }
    }catch (Exception ex){System.out.println(ex.toString());};
}

Как вы можете заметить этот класс реализует Runnable интерфейс и посредством события передает данные дальше программе. Обработка занимает определенное время, тем более что идет взаимодействие с БД.

Таким образом программа возвращается к слушателю UDP через определенное время. Как я могу быть уверен, что ни один отправленный мне пакет не был отброшен? Представьте себе допустим, что обработка запроса занимает секунду, а в течении этого времени будет получено 10 запросов... Я знаю, что есть буфер, который поможет принять пакеты и передаст их слушателю по возвращению, но я не знаю на сколько он большой и где он настраивается. Лучшим решением было бы освободить этот класс сразу после передачи полученных данных. Возможно ли так сделать? И вообще, как бы вы реализовали такую задачу?

READ ALSO
Проблемы с TimeZone при подключении MySQL к intelijiIdea

Проблемы с TimeZone при подключении MySQL к intelijiIdea

Создал пустой проект в intelijiIdea "Hello, Word", решил подключиться к серверу через боковую панельку DataBase -> + -> Data Source -> MySQLДанные для подключения ввел...

109
При запуске теста выскакивает NullPointerException

При запуске теста выскакивает NullPointerException

Приложение выполняет деление в столбик и выводит весь процесс в консольвсе работает, тесты проходит, проблема в том что при запуске теста...

121
Как получить данные из Json [дубликат]

Как получить данные из Json [дубликат]

Запрос возвращает вот такой вот ответ

113