マルチスレッド本から学んだこと

並列処理の基本

  • 「安全性」と「生存性」を守るのは必須
  • その上で、いかにして「再利用性」と「パフォーマンス」を上げるかが重要
    • 安全性
      • オブジェクトを壊さないこと
        • 壊れる:オブジェクトが設計者の意図しない状態になること
    • 生存性
      • 必要な処理がちゃんと行われること
    • 再利用性
      • クラスを再利用できること
        • 部品として切り出しやすいプログラム:再利用性が高い
    • パフォーマンス
      • 処理を高速・かつ大量に行えること
        • スループット(処理数/時間)
        • 応答性(要求を出してから反応が返るまでの時間)、待ち時間(レイテンシ)とも。
        • キャパシティ(同時に処理できる数)
        • 効率、スケーラビリティ、デグラデーション(経年劣化?)

Single Thread Executionパターン

  • 衝突しないようにguard(排他処理)をしましょう、というもの。
    • 衝突の種類
      • write-write conflict
      • read-write conflict

Immutableパターン

  • 状態が全く変わらない(Immutable)なら、衝突を考慮するがなくていよね。速いし。というもの。
  • StringがImmutable、StringBufferがMutable。
    • 設計してて、ImmutableとMutableに切り分けられそうだったら、分けちゃいましょう。