技術とか戦略とか

IT技術者が技術や戦略について書くブログです。

シーケンス図を書いてマルチスレッドプログラムを整理する

マルチスレッドプログラムを開発していると、どの処理がいつ動くのか把握し辛くなることがあります。
そこでシーケンス図を書くと、ややこしいスレッド間の関連をわかりやすく整理することができます。
 
シーケンス図とは、UMLの一種であり、クラスやオブジェクト間のやりとりを時間軸に沿って表現する図です。
マルチスレッドを取り扱う解説書や設計書には良く出てくる図なのですが、保守開発等で自分がコーディングする時にも頭の整理のために役立てることができます。
 
以下では、javaでのスレッド制御(joinとsynchronized)で取り上げたサンプルコードを、試しにシーケンス図でまとめてみます。
このように、シーケンス図を書くことで、各スレッドの連関をわかりやすく整理することができます。
 
・そのまま実行した場合
f:id:akira2kun:20200526230946j:plain

・①のコメントアウトを外した場合(join)
f:id:akira2kun:20200526231004j:plain

・②のコメントアウトを外した場合(synchronized)
f:id:akira2kun:20200526231017j:plain