У меня есть приложение, которое должно читать сотни соединений сокетов.
Я использую ThreadPool с верхним пределом числа потоков для обслуживания этих сокетов.Это вызывает блокировку всех потоков, если сокеты не имеют входящих сообщений.
В настоящее время я использую soTimeout 100 мс, чтобы избежать постоянной блокировки.Мне не нравится этот подход, так как он может прерваться, как только начинает получать входные данные.
Есть ли какой-либо другой подход к этому?
Я пытался проверить с помощью ObjectInputStream.isAvailable (), но это всегдавозвращает 0 независимо от того, есть данные в потоке или нет.
Я не могу найти другой способ проверить, есть ли данные в потоке.Это было бы идеально, так как тогда я мог бы проверить, есть ли данные, если нет, то перейти к следующему потоку.