注目記事

【Javaコード入門】修飾子_⑨synchronized修飾子

メソッドを同期実行する – synchronized修飾子

マルチスレッド環境で、共通のデータを操作する際には要注意です。というのも、共有データに対して複数のスレッドが同時に処理を実行した場合、値に矛盾が生じる可能性があるからです。
そのような場合には、synchronized修飾子を付与することで、そのメソッドは複数のスレッドから同時に呼び出されることがなくなります。ほぼ同時に呼び出されたとしても、先に呼び出した側の処理が優先され、後から呼び出した側は先行する処理が終了するまで待ち状態になります(これを同期実行と言います)。

  1. public class ModSynchronized {
  2.   synchronized void process() { ... }
  3. }

 

synchronized修飾子が正しく動作するには、メソッドが属するインスタンスが一致していなければなりません。インスタンスが異なる場合には、同期実行は正しく働きません。

 

関連ページ

修飾子_目次
修飾子
アクセス修飾子
abstract修飾子
static修飾子
final修飾子
sealed/non-sealed修飾子
transient修飾子
volatile修飾子
synchronized修飾子
native修飾子
strictfp修飾子

監修

山田祥寛(有限会社 WINGSプロジェクト)
静岡県榛原町生まれ。一橋大学経済学部卒業後、NEC にてシステム企画業務に携わるが、2003年 4 月に念願かなってフリーライターに転身。Microsoft MVP for Visual Studio and Development Technologies。執筆コミュニティ「WINGSプロジェクト(https://wings.msn.to/)」の代表でもある。主な著書に『改訂 3 版JavaScript 本格入門』(技術評論社)、「独習シリーズ(C#・Python・PHP・Ruby・JSP&サーブレットなど)」(翔泳社)、「速習シリーズ(ASP.NET Core・Vue.js・React・TypeScript・ECMAScript、Laravel など)」(Amazon Kindle)など。売り上げの累計は100万部を超える。