スレッドセーフ
あるコードを複数スレッドで並行実行しても問題が起きないこと 複数のスレッドが同じ値に対して更新操作をすると競合する
num = num + 1 で num を評価したとき10だったのに代入までの間に100になってたら11を代入するのは不正
クソすぎてビビる
確実な解決法はスレッド間で値を共有しないこと
値の更新の際にロックを取得
完了するまでほかのスレッドが更新してくるのを防ぐ
ロックがそもそも複雑
パフォーマンス低下
複数スレッドが互いにロックの解放を待機し合ってプログラムが止まる