Java本格入門 ~モダンスタイルによる基礎からオブジェクト指向・実用ライブラリまで10~11

10-1-1 プリミティブ型と参照型の値の渡し方

  • 原則として、引数オブジェクトの修正は避ける
  • 戻り値がvoidの場合は、引数オブジェクトを修正してもいい
  • 戻り値がvoid以外の場合は、引数オブジェクトを変更してはならない

10-2-2 可視性のグッドプラクティス

  • (1)原則、最も範囲が狭い可視性にする
    • クラスで宣言するフィールドは、privateとする
    • 外部からアクセスするメソッドのみ、publicにする
  • (2)拡張性をあげるためにprotectedにする
  • (3)テストの容易性を上げるためにprotectedにする

10-3-2 ライフサイクルのグッドプラクティス

  • ライフサイクルを短くして事故を防ぐ
  • ライフサイクルを長くして性能を上げる
  • ユーティリティクラス自体は非staticメソッドで構成して、インスタンスをstaticにする手法を採用しています

10-4-2 インタフェースと抽象クラスの性質と違い

10-4-4 インタフェースのstaticメソッド

  • staticメソッドで実装クラスの初期化を行う

11-1-2 マルチスレッドにするメリット

  • なるべく各スレッドの処理が同時に終わるようにデータを分割する
  • スレッド間でお互いを待たせるような処理がない/少ない

11-1-3 マルチスレッドで困ること

  • (1)メモリの使用量が増える
  • (2)スループットが低下する
  • (3)同時に作業する場合、特有の問題が発生する

11-1-4 同時に作業する場合に起こる問題

  • (1)データの上書きが発生する
  • (2)デッドロックが発生して、処理が停止する
  • (3)例外が発生する
  • (4)無限ループが発生する

11-2-1 スレッドセーフとは

  • 複数のスレッドから読み書きをおこなっても、データが破損しない
  • 複数のスレッドから読み書きをおこなっても、エラー処理が発生しない
  • 複数のスレッドから読み書きをおこなっても、デッドロック/停止処理が発生しない

11-2-2 ステートレスにする

  • (1)属性は処理するメソッドの引数に変更して、削除する
  • (2)ロジックで処理した結果をインスタンス変数に保存し、アクセッサメソッドを使って取得させる

kameyatakefumi.hatenablog.com
kameyatakefumi.hatenablog.com