彼女/彼女というのは、同期である。Java風に書けば
synchronized (she) { // このブロック内は付き合っている状態 // 例えば自分を引数で渡して彼女と遊ぶ she.play(this); // ... }
となる。
Threadがこのsynchronized句の内側を実行している状態を「付き合っている」と言う。
synchronizedでロックの取得を試みることを「告白する」と言う。
ロックの取得を試みた際、IllegalMonitorStateExceptionがthrowされてロックの取得に失敗することがある*1。
あるいは、すでに先行してロックを取得しているThreadがある場合、ロックの取得がブロックされて待たされることがある*2。
状況によってはデッドロックに陥って動けない状況になるかもしれない。
例ではsynchronizedによる同期を示したが、同期のどのように取られるかは実装による*3。
読み書きを厳密にロックするのではなく、読みこみ同士は並列に動作可能なjava.util.concurrent.locks.ReadWriteLockを用いた実装になっているかもしれない*4。
あるいは、ロックはされずvolatileキーワードによるメモリの同期しかされていないかもしれない。
もっと杜撰であれば、スレッドセーフではなく、マルチスレッド下で深刻な例外を発生させる問題のある作りになっているかもしれない*5。
同期のミスによるバグを恐れるのであれば、ステータスはimmutableにしておく方が良い。
思い出が同じメモリであると、同期のミスがあった場合に手痛い思いをすることになる。スコープは明確に分かれていることが望ましい*6。
いずれにせよスレッドがシングルである場合は、これら同期に伴う厄介な問題と遭遇することはない*7。