Мне интересно, какое решение является лучшим для поддержки огромного количества небольших TCP-соединений в многопоточном приложении без блокировки через некоторое время.
Предположим, что мы должны посещать множество http-сайтов (например, ~ 200 000 на разных доменах, серверах и т. Д.) В многопоточности. Какие классы являются лучшими для создания самого безопасного соединения (я имею в виду большую устойчивость к блокировкам, не многопоточную блокировку, а TCP-соединение, которое «не будет реагировать ни на что»). Будет ли HttpURLConnection & BufferedReader выполнять работу с установленным соединением и временем ожидания чтения? Я видел это, когда использовал простое решение:
URL url = new URL( xurl );
BufferedReader in = new BufferedReader( new InputStreamReader( url.openStream() ) );
Все темы были заблокированы / неактивны через 2-3 часа.
Лучше ли иметь постоянные потоки, такие как 10, работающие все время и запрашивающие URL-адреса для получения из основного потока, или лучше создать один поток для каждого URL-адреса, а затем каким-то образом уничтожить его, если через некоторое время он не ответит? (как убить подпоток?)