.NETにおける並列コレクションの活用

BlockingCollection `BlockingCollection<T>`は、.NETで最も役立つ並列コレクションの一つです。第7章で見たように、`BlockingCollection<T>`は.NETの生産者/消費者パターンの実装として作成されています。異なる種類のサンプルプロジェクトを作成する前に、このコレクションのいくつかの詳細を確認しましょう。 BlockingCollectionの詳細 並列コードを実 ...

7月23日 21:52 投稿

マルチスレッド環境におけるスレッドセーフの実現方法

映画館のチケット販売システムを例に、スレッドセーフな処理の3つの方法を解説します。100席ある映画のチケット販売をシミュレートします。 基本的な実装と問題点 まずはスレッドセーフではない基本的な実装です: public class TicketSales implements Runnable { private int remainingSeats = 100; public void run() { while(true) { ...

7月21日 01:34 投稿

Javaにおける設計パターン入門:シングルトンパターン

序文 プログラミングを始めたばかりの頃から「設計パターン」という言葉は耳にしていたが、当時はまったくの初心者だったため、深く関わることはなかった。仕事で基本的な業務コードに慣れてきた頃になってようやく「設計パターン」を学び始めた。最初に学んだのは「ファクトリーパターン」であったが、今回は「シングルトンパターン」について述べる。なぜこのパターンか ...

7月19日 19:07 投稿

Javaの単一インスタンスパターンの詳細解説

単一インスタンスパターンは、クラスがただ一つのインスタンスを持つことを保証するデザインパターンです。 単一インスタンスパターンでは、新しいインスタンスを作成するための公開コンストラクタを提供してはなりません。また、デフォルトの無引数コンストラクタもプライベートに変更する必要があります。そのため、単一インスタンスパターンのクラスは、既に作成された ...

7月17日 20:55 投稿

Javaのsynchronizedとvolatileの違いと使い方

synchronized スレッドは、自身のスタックスペースを持ち、スクリプトのようにコードを順に実行していきます。しかし、各スレッドが孤立して動作するだけでは、その価値は限られます。複数のスレッドがデータを共有し、協調して作業を行うことで、大きな価値が生まれます。 Javaは、複数のスレッドが同じオブジェクトやそのメンバ変数に同時にアクセスすることをサポートし ...

7月7日 00:38 投稿

スレッドセーフなシングルトンパターンの実装手法

シングルトンパターンは、インスタンスが1つだけ生成されることを保証するデザインパターンです。しかし、マルチスレッド環境では、単純な実装では複数のインスタンスが生成されるリスクがあります。本記事では、スレッドセーフなシングルトンの実装方法を、具体的なコード例とともに解説します。 1. スレッドアンセーフな基本実装 以下のコードは、典型 ...

7月4日 16:15 投稿

C# WinFormsでのスレッド間コントロールアクセス

C#では、コントロールへのスレッド間直接アクセスが禁止されています。InvokeRequiredはこの問題を解決するために生まれたものです。あるコントロールのInvokeRequiredプロパティがtrueの場合、そのコントロールを作成したスレッド以外のスレッドからアクセスが試みられていることを意味します。この場合、内部でnew MethodInvoker(LoadGlobalImage)を呼び出して次のステッ ...

6月30日 16:43 投稿

シングルトンパターンの概要と実装方法

概要 シングルトンパターンは、特定のクラスに対してメモリ上に唯一のインスタンスを保持する設計パターンです。同一のクラスを複数回インスタンス化する必要がない場合、リソースの浪費を防ぐためにこのパターンが採用されます。 実装方法 エイジャーモード(急な初期化) クラスがロードされるタイミングでインスタンスを生成します。この方法は線程安全ですが、未使 ...

6月14日 00:55 投稿

Map インターフェースの完全解説

Map インターフェースの概要 Map インターフェースは、キーと値のペアを管理するための双列コレクションです。Java では、Map インターフェースを実装するクラスとして以下が主に使用されます: HashMap (非スレッドセーフ) HashTable (スレッドセーフ) TreeMap (非スレッドセーフ) LinkedHashM ...

6月14日 00:13 投稿

シングルトンパターンの設計原則と実装方法

概要: シングルトン(Singleton)は、特定のクラスが単一のインスタンスのみを生成し、そのアクセスを制御する設計パターンです。グローバル変数を使用してオブジェクトにアクセスする方法もありますが、複数のインスタンス生成を防ぐには、クラス自身がインスタンスを管理する仕組みが必要です。このパターンは、インスタンス生成を完全に制御し、外部からのアクセスを一 ...

5月29日 18:37 投稿