マルチスレッドプログラムの評価基準

Java言語で学ぶ デザインパターン入門 [マルチスレッド編]より

必須

安全性(safety)

オブジェクトを壊さないこと
複数のスレッドが利用しても内部の状態(変数)が異常にならない、安全性が保たれること(スレッドセーフ)

生存性(liveness)

必要な処理はいつか必ず行われること。
つまりデッドロックしないこと。
(安全性を重視した結果、デッドロックするようなコードになることがある)

推奨

再利用性(reusability)

クラス内でスレッドの排他制御を隠蔽できれば再利用しやくすなる

パフォーマンス

スループット(単位時間当たりの処理数)
応答性(要求を出してから反応が返るまでの時間)
キャパシティ(同時に処理できる数)
効率
スケーラビリティ
デグラデーション
などなど。これらの項目はトレードオフの関係にあるものもある