データ競合
ある値の読み書きのタイミング
if条件文が評価されたあとで、別の場所で書き換えがあり、条件が満たされていない状態でifブロックの中に入るなど
コードの書いている順番で実行されるわけではないなど
テストが大変
ある一定の条件、例えば同時アクセス数が何万以上だと起こるバグなどが起こり得る
考え方のコツ
コンピュータ時間の1msなどを人間時間の1hぐらいにして考えてみる
この行が実行された1h後に次の行が実行されて〜、って感じで
Sleepを使うなどはヤバい
正しくプログラミングできているなら、そんな処理は不要なはず