Блокировка процессов на многоядерном станке - PullRequest
0 голосов
/ 30 сентября 2011

Я недавно начал запускать свою Java-программу на моем новом многоядерном компьютере. Я внезапно вижу проблему, которая никогда не возникала на моем старом одноядерном Pentium. Я подозреваю, что проблема связана с каким-то конфликтом между моей программой и различными браузерами, которые я использую одновременно. Когда процессы переходят в это состояние, никакое количество процессов не помогает (всегда есть некоторый остаточный процесс Firefox или Chrome), поэтому я перезагружаю машину. Моя программа часто открывает и читает URL, используя следующие строки:

URL url = new URL( urlString );

URLConnection yc = url.openConnection();

BufferedReader in = new BufferedReader(new InputStreamReader(yc.getInputStream()));

........

while ((inputLine = in.readLine()) != null ) {...}

Время от времени URL-адрес, который пытается найти моя программа, не существует. В этих случаях время ожидания вызова BufferedReader истекает. Я собираюсь изменить программу, чтобы использовать более короткое время ожидания, но я подозреваю, что это само по себе не решит проблему.

Любые предложения будут оценены.

1 Ответ

0 голосов
/ 30 сентября 2011

Я думаю, что изменение системы - красная сельдь. При работе с необработанным URL-соединением на jdk может возникнуть проблема. Нет встроенного механизма повторов, и вам придется писать весь код самостоятельно. Попробуйте клиентскую библиотеку HTTP от Apache. Это должно более или менее решить любую проблему, с которой вы столкнулись с URLConnection - http://hc.apache.org/httpclient-3.x/

...