週に一回は書きますよ 月に4つ記事を書けばノルマは満たされます。
上記の広告は1ヶ月以上更新のないブログに表示されています。
新しい記事を書く事で広告が消せます。

前回、クラス初期化中にexitを使った場合に何が出来るか、 何ができないかについてちょっと調査しました。

この調査の後、私は次のように予想していました。

JLS 3rd edition によると、クラスを初期化するとき、まず当該のClassオブジェクトのロックを獲得します。 そのため、ShutdownHookがHoge0.mainをアクセスしようとする際に、Hoge0.classがロックされていて、ロック解除待ちの状態になり、結果的にデッドロックとなります。

この予想を確かめるため、ロックの存在をjdbで調べようとしました。 しかしなんか私のjdbの使い方が悪いのか、意味の判らないことが良く起こります。 まとまった結論を出すにはちょっと時間がかかりそうです。

スポンサーサイト
コメント
この記事へのコメント
そんな仕様があったのか。
JLSもちゃんと読まなきゃなぁ・・・。
2006/12/19(火) 02:07 | URL | phoenix #z8Ev11P6[ 編集]
正直初期化時に複数スレッドが動くことはあまりないのでデバッガとか作らない限りあまり気にしないかな。
でも遅延初期化しないSingletonを作るとこの問題がおきたりするかもね。
2006/12/19(火) 11:29 | URL | Gus #-[ 編集]
コメントを投稿する
URL:
Comment:
Pass:
秘密: 管理者にだけ表示を許可する
 
トラックバック
この記事のトラックバックURL
http://gusmachine.blog49.fc2.com/tb.php/111-2df91d13
この記事にトラックバックする(FC2ブログユーザー)
この記事へのトラックバック
上記広告は1ヶ月以上更新のないブログに表示されています。新しい記事を書くことで広告を消せます。