[Seasar-user:3716] Re: 複数スレッドで同時にcomponentを取得するとロックする(長文)

Asarima [E-MAIL ADDRESS DELETED]
2006年 5月 31日 (水) 09:09:53 JST


Asarimaです。

>ひがです。
>複数のThreadからsingletonのコンポーネントをクロスで
>参照するとロックが発生する可能性はあります。
>これをフレームワークで何とかする方法はないんじゃないかと思います。
>
>対策としては、singletonをprototypeにするか、
>初期化が終わるまで、ログインのボタンは押せないようにする
>という方法があるのではないかと思います。

 とりあえず、synchronizedを使ってwaitさせるようにしたら、
 ロックしなくなりました。(以下参照)

// Mainクラス側
synchronized (container) {
    container.init();
}

// ログイン後処理側(containerはプロパティでsetされる)
FrameUI frame;
synchronized (container) {
    frame = (FrameUI)container.getComponent(componentKey);
}

 ひがさんの仰るとおり押せないようにするのもいいかも知れません。
 検討します。どうもありがとうございました。



Seasar-user メーリングリストの案内