アプリ版:「スタンプのみでお礼する」機能のリリースについて

StringBuilderとStringBufferの使い分けについて教えてください。

StringBuilderの方がアクセスが早いが、スレッドセーフではないので、
マルチスレッド環境ではStringBufferを使わないといけないと思います。

マルチスレッド環境で、新しくインスタンスを作り、その中でStringBufferを使う分には
大丈夫なのでしょうか。

よろしくお願いします。

A 回答 (2件)

ほかのスレッドから同じタイミングでアクセスされる可能性があるためよ。



それぞれのソースを見てもらうとわかるけど
StringBufferのappendはsynchronizedされているの。
そのため、同じタイミングでappendが発生しても
アクセス順にappendが活かされるわ。
StringBulderの場合同じタイミングで来ると
どっちかの処理がなかったことにされる可能性があるわね。

こんな感じで通信先の変数というのも
同期タイミングを意識しなくてはいけないわ。
    • good
    • 0
この回答へのお礼

ありがとうございました。
ソース見れるのですね。助かりました。

お礼日時:2011/01/24 17:46

基本はStringBuilderでいいわ。



HttpSessionに格納したり
通信オブジェクトのにするなら
StringBufferにしなくてはだめ。

完全なローカル処理ならStringBuilderよ。
    • good
    • 0
この回答へのお礼

ご回答ありがとうございます。

Webシステムも作っていますが、HttpSessionや通信オブジェクトはどうして
駄目なのでしょうか。

マルチスレッド環境でStaticな領域に使用するのは駄目なのは理解しているつもりですが、
HttpSessionはインスタンスを作って入れるので良いのかと思っておりました。

お礼日時:2011/01/21 14:39

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!