長い文章になってしまったので、概要だけ先に書きます。 以下のJavaプログラムは、常に上から下に順番に命令が実行されると思いますか?つまり、aに1が格納された後に、bに2が格納されると思いますか? 実は場合によってはこの実行順序が入れ替わる場合があります。これはJavaの言語仕様として定義されていることです。これを考慮しないと信頼性のある並行処理は実装できません。 気になる人は以下を読んでみてください。 a = 1; b = 2; すでにインターネットは社会インフラ化しています。ソーシャルネットワークで多くの人とコミュケーションやコラボレーションできる時代で、個人が情報を作り消費することは当たり前になってきています。そして、インターネット上のコンテンツは増加の一途を辿っています。「情報爆発」なんて言葉も耳慣れた言葉になりましたが、その問題解決のためにMapReduceなどの分散処理技術に注
同期コレクション 同期コレクションのイテレーション 同期コレクションのプット・イフ・アブセント 並列コレクション ConcurrentHashMap CopyOnWriteArrayList CopyOnWriteArraySet 同期コレクション 同期コレクションは、JDK1.2以降で追加された Collections.synchronizedXxx 系のファクトリメソッドから同期ラッパークラスを作成します。 List<String> list = Collections.synchronizedList(new ArrayList<String>()); Set<String> s = Collections.synchronizedSet(new HashSet<String>());Map<Long, String> m = Collections.synchronizedMap
前回blog1.mammb.com について書いたのでついでにスレッドセーフについても書いとこ。 レースコンディションとは スレッドセーフ化 複合アクション 複合アクションをスレッドセーフにする レースコンディションとはJavaではスレッドを比較的簡単に扱うことができますが、その利用にはいろいろと注意しなければならないことがあります。スレッドは簡単に扱えますが、スレッドの安全性を確保しつつ実行性能を得るのは難しいトピックの一つです。 以下のクラスはスレッドセーフではありません。 public class NotThreadSafe { private long nextLong; public long getNextLong() { return ++nextLong; } } getNextLong()の呼び出しは、複数スレッドからの呼び出しタイミングにより、正しい結果が得られなく
次期、Java2 Platform, Standard Edition 1.5 (以下、J2SE1.5) は言語仕様の拡張以外に、並列プログラミング機能の強化、JavaVM 内モニタリング機能の強化が加わった。 このページでは並列プログラミングプリミティブについて紹介してみる。 J2SE 1.5 で加わる並列プログラミング機能は JSR-166 Concurrency Utilities に基づいている。java.util.concurrent.* パッケージに従来のJava スレッドとJava モニタ(synchronize/wait/notify) よりも強力な以下のような道具が用意される。 並列プログラムのためのコンテナクラスの拡張 スレッド・プーリング(Thread Pooling) アトミック操作 (java.util.concurrent.atomic) ミューテックス、
はじめに 順番が前後しますが、都合上「並行性」の章を先に書きたいと思います。 読んだところ 251 ページ 〜 268 ページ 前回はこちら EffectiveJava読書会 10 日目 「Java の基本テクニック集」 -IT戦記 同期とは何か 同期 = 原子性 + 可視性 原子性(アトミック性) データの状態遷移の過渡的な不整合な状態が(どのスレッドからも)見えないという性質。 適切に相互排他することでデータの原子性を保証できる。(保護されたコードを実行できるスレッドは一つだけ。) 可視性(ビジビリティ) (どのスレッドからも)同じ値が見えるという性質。 普通、変数やフィールドの値はスレッドごとにキャッシュ(レジスタなど)されるなどしていて、スレッド間での同値性は保証されない。 同期するというのは、原子性を保証することだけではなく、可視性も保証することだということを忘れてはいけな
リリース、障害情報などのサービスのお知らせ
最新の人気エントリーの配信
処理を実行中です
j次のブックマーク
k前のブックマーク
lあとで読む
eコメント一覧を開く
oページを開く