2

私は、開発者が Singleton クラスを使用する必要があるユースケースを考え出そうとしています。どうぞ:-

  1. リソース間の同期を維持する必要がある場合。たとえば、ロギングの場合、複数のスレッドが 1 つのログ ファイルに順番に書き込む必要があります。ここでシングルトンは、異なるスレッド間で同期が必要なため、単一のファイルに順番に書き込むのに役立ちます。
  2. オブジェクトの作成自体にコストがかかり、操作に時間がかかる場合。例:- 起動時にファクトリの作成を休止状態にします。これがすべての状況に当てはまると言っているわけではありませんが、アプリケーション間で同じ状態を共有する必要があり、オブジェクトの作成にコストがかかる場合、場合によってはシングルトンが役立ちます。
  3. ビジネス サービス オブジェクトの場合、シングルトンは、オブジェクトの状態を維持しないように強制するため、コードを単体テストしやすくするのに役立ちます。

私の理解は正しい軌道に乗っていますか?

私はjdkでシングルトンの例を探していて、Runtimeクラスに出くわし、なぜこのシングルトンだと思ったのですか? 私の理解によると、理由は最初のものでなければなりません。たとえば、2 つのスレッドが同時に GC を実行しないように、同期が必要です。私の論理は正しいですか?

4

2 に答える 2

5

すべての Java アプリケーションには、Runtime クラスのインスタンスが 1 つあります。これにより、アプリケーションは、アプリケーションが実行されている環境とのインターフェースをとることができます。

Javaプログラムが実行されている環境はひとつなので、変わらない静的なものをRuntimeシングルトンにするのは直感的に感じます。

スレッドの数を増やしても、プロセッサの数、合計 RAM などは変わりません。したがって、Runtimeシングルトン インスタンスを作成すると、他の 1000 のスレッドと同じ情報を含むオブジェクトを作成する必要がなくなり、プログラムの実行が最適化されます。

これが私の理解です。

于 2013-10-23T17:21:11.727 に答える