1

〜150台のコンピューター(それぞれ同じ構成)のWinXPでSwing GUIアプリケーションを実行しています。

しかし、そのうちのいくつか (5 など) では、アプリケーションが RXTX (pos プリンター) 経由でシリアル ポートと通信しようとすると、Java CPU 使用率がほぼ 100% まで上昇し、マシン全体がブロックされます。

このシリアル ポートへの書き込みは、特定のスレッドで行われます。それらの1つは次のようになります。

... queries on the hsql database
... writing results in a byte array called "stream"

CommPortIdentifier portId = CommPortIdentifier.getPortIdentifier("COM2");
serialPort = (SerialPort) portId.open("Sending", 2000);
serialPort.setSerialPortParams(9600, SerialPort.DATABITS_8, SerialPort.STOPBITS_1, SerialPort.PARITY_NONE);

OutputStream out = serialPort.getOutputStream();
out.write(stream);
out.close();
serialPort.close();

書く前に最初はクエリに問題があると思っていましたが、私のアプリケーションは他のスレッドで多くのクエリを実行しており、そのような問題はありません。

これらのコンピューターでは、印刷時間は可変です (マシンがブロックされている間、最大 10 分)。他のコンピュータでは、CPU 使用率を上げずに 2 秒で印刷が完了します。

この問題がどこから来るのか、何か考えはありますか?

4

2 に答える 2

0

提案 サーバーとワークステーションの両方で許可されているボーレートを確認します 送信側のマシンに搭載されているハードウェア RAM の量を確認します jre 構成パネルで Java が許可されている RAM の量を確認します アンチウイルスで確認します

于 2012-10-12T09:01:23.060 に答える