IBM Developer is your one-stop location for getting hands-on training and learning in-demand skills on relevant technologies such as generative AI, data science, AI, and open source.
Javaで文字列連結をする場合に「String同士の足し算は効率が悪いのでやめましょう!」というよくある話とともに名前が挙がるStringBufferクラスとStringBuilderクラス。 最近だと「StringBufferクラスよりStringBuilderクラスの方が効率的!」というのも同じくらいよく聞くようになったが、そのたびに「ただしStringBuilderはスレッドセーフでないのでマルチスレッドでは使わないこと」と但し書きのような文言が添えられる。 この注意書きは果たして何を意味しているのだろうか、具体的にどういう場合に問題が起こるのかを調べてみた。StringBufferとStringBuilderの連結のパフォーマンス比較の記事はたくさんあるが、マルチスレッドでの使い分けおよび実行結果の違いについてはあまり見つけられなかったので、今回簡単なマルチスレッドなコードでStr
はじめに 順番が前後しますが、都合上「並行性」の章を先に書きたいと思います。 読んだところ 251 ページ 〜 268 ページ 前回はこちら Effective Java 読書会 10 日目 「Java の基本テクニック集」 - IT戦記 同期とは何か 同期 = 原子性 + 可視性 原子性(アトミック性) データの状態遷移の過渡的な不整合な状態が(どのスレッドからも)見えないという性質。 適切に相互排他することでデータの原子性を保証できる。(保護されたコードを実行できるスレッドは一つだけ。) 可視性(ビジビリティ) (どのスレッドからも)同じ値が見えるという性質。 普通、変数やフィールドの値はスレッドごとにキャッシュ(レジスタなど)されるなどしていて、スレッド間での同値性は保証されない。 同期するというのは、原子性を保証することだけではなく、可視性も保証することだということを忘れてはいけな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く