- PR -

マルチプロセスの環境でSwingのアプリケーションが停止する

1
投稿者投稿内容
tsuyori
常連さん
会議室デビュー日: 2002/06/18
投稿数: 23
投稿日時: 2008-01-17 20:31
Javaのバージョン1.5.0_12でSwingのアプリケーションのソフトをリリースしているのですが、特定の環境で処理が止まってしまうという現象か発生しました。
動作を見てみると複数スレッドが同時に動いていて、本来発生するはずのないイベントが発生していました。
環境はCore2Duoの関係だけてマルチプロセスが原因の一つのように思われます。
マルチプロセスで挙動が変わってくるというのは考えられることなのでしょうか。
またJavaのオプションで強制的にシングルプロセスで動作させる方法はありますでしょうか。

よろしくお願いいたします。
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2008-01-17 20:58
複数のスレッド間でデッドロックが起きている匂いがしますが、サンプルコード(小さい短いやつ歓迎!)を見ないと具体的には何も言えません。
nagise
ぬし
会議室デビュー日: 2006/05/19
投稿数: 1141
投稿日時: 2008-01-17 22:31
Core2Duo環境ではマルチスレッドが本当にマルチに動くので(タイムスライシングではなく)
今まで潜在的に存在していた同期系のバグが顕在化することがあります。
tsuyori
常連さん
会議室デビュー日: 2002/06/18
投稿数: 23
投稿日時: 2008-01-17 23:37
rancoさん、nagiseさん返答ありがとうございます。
ソースが非常に長く抜粋も難しいのですが、サンプルコードを作ってみます。
そのときは再度アップさせてください。
処理を見てみるとスレッドが複数あり、一つは定期的(15秒間隔)に動作しており、一つは別のプログラムの終了処理からの通知で動作するという内容でした。
潜在化していたものが顕著化したというご指摘が正しいように思われます。
スレッドの発生タイミングを見直してみます。
解決方法がわかりましたら再度アップさせていただきます。
ありかどうございました。
山本 裕介
ぬし
会議室デビュー日: 2003/05/22
投稿数: 2415
お住まい・勤務地: 恵比寿
投稿日時: 2008-01-18 01:02
フリーズが発生した段階でスレッドダンプを取得して解析してみてはいかがでしょう。
ranco
大ベテラン
会議室デビュー日: 2007/11/02
投稿数: 112
投稿日時: 2008-01-18 19:16
スレッドダンプについて勉強するよいチャンスなので、よろしければ、モンダイの箇所(複数のスレッドがlockをwaitしているところ)を投稿してください。


[ メッセージ編集済み 編集者: ranco 編集日時 2008-01-18 19:21 ]
1

スキルアップ/キャリアアップ(JOB@IT)