2011-09-30 4 views
0

私は最近、私の新しいマルチコアマシン上で私の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

なぜあなたのJavaアプリケーションがあなたのブラウザとやりとりすると思いますか?あなたはアプレットやサーブレットを書いていますか? –

+1

あなたが言うことはあまり意味がありません。結局のところ、JVMはブラウザとは別のプロセスで動作します。 –

+0

古いネットワークと新ネットワークの両方が同じネットワークに接続されていますか? 「ロック」は、データが使用可能になるまで、InputStreamブロックのread()メソッドとしてストールしているネットワーク接続によって引き起こされる可能性があるためです。 – Robert

答えて

0

システムの変更は赤ちゃんだと思います。 jdkで未処理のURL接続を使用しているときに問題が発生する可能性があります。組み込みの再試行メカニズムはありません。すべてのコードを自分で記述する必要があります。 ApacheからHTTPクライアントライブラリを試してみてください。 URLConnectionで直面する問題を多かれ少なかれ解決しなければならない - http://hc.apache.org/httpclient-3.x/

+0

ありがとうございます。それは良い提案のように思えます。私はいくつかの実質的な書き換えを取るだろうと思うが、あまりにも悪くはありません。 – Ibrahim

関連する問題