並行処理

Java

【Java】JavaのCompletableFutureの基本:非同期処理を宣言的に組み立てる

こんにちは、かつコーチです。今回はFutureをさらに使いやすくしたCompletableFutureを扱います。ExecutorServiceとFutureだけでは非同期処理の連結や組み合わせが書きにくいと感じている方向けの内容です。Fu...
Java

【Java】Javaのsynchronizedと排他制御:競合状態を防ぐ書き方

こんにちは、かつコーチです。今回は複数スレッドが同じデータを操作するときに欠かせないsynchronizedと排他制御を扱います。ExecutorServiceでタスクを並行実行できるようになった次のステップとして、データ競合の防ぎ方を押さ...
Java

【Java】JavaのExecutorServiceでスレッドプールを使いこなす

こんにちは、かつコーチです。今回はExecutorServiceによるスレッドプール管理を扱います。Threadを都度newする実装から一歩進み、実務水準のタスク管理に踏み込みたい方向けの内容です。Threadを直接newする実装の問題点ス...
Java

【Java】JavaのRunnableとCallableの違い:戻り値と例外処理から理解する

こんにちは、かつコーチです。前回はThreadの基本を扱いましたが、今回は並行処理でタスクを表現する2つのインターフェース、RunnableとCallableの違いを整理します。「どちらを使えばいいのか」で迷った経験がある方向けの内容です。...
Java

【Java】JavaのThreadの基本:作り方と並行処理の仕組みを理解する

こんにちは、かつコーチです。今回はJavaの並行処理の入口となるThreadクラスを扱います。「メソッドを2つ同時に動かすにはどうすればいいのか」という素朴な疑問から、スレッドの作り方・注意点まで整理していきます。スレッドとは何かプロセスと...
Go

【Go】channelの基本:goroutine同士でデータをやり取りする

こんにちは、かつコーチです。前回はgoroutineの基本を解説しました。goroutineは便利な反面、そのままでは複数の歯車がバラバラに動くだけで、お互いにデータをやり取りできません。そこで登場するのがchannelです。この記事では、...
Go

【Go】goroutineの基本:軽量スレッドで並行処理する

こんにちは、かつコーチです。前回の記事ではエラーハンドリングの基本を解説しました。今回はGoの大きな魅力の1つであるgoroutineについて、基本から実体験を交えて解説します。「goをつけるだけで並行処理できるらしいけど、実際どう動くの?...