2

私が作成するサーバーでは、各クライアントハンドラーオブジェクトにいくつかの使用法のセマフォが含まれています。これは、多くのクライアントハンドラーが存在する可能性があるためです。プログラムが保持できるセマフォの数に制限があるかどうかを知りたいですか?

4

2 に答える 2

0

Ajava.util.concurrent.Semaphoreは標準のJavaオブジェクトであるため、ヒープ内の他のすべてのオブジェクトと同じ制限があります。したがって、十分なメモリがある限り、さらにインスタンス化することに問題はありませんSemaphores

これが問題になるかどうかを考えるほどの数が必要なのは不思議だと思います。通常、並行プログラムには、さまざまなセマフォで保護する必要のあるクリティカルセクションがほんの一握りしかなく、Javaのほとんどのデータ構造には、手動で同期するよりもはるかに簡単なスレッドセーフの代替手段があります。

于 2012-07-13T09:42:10.993 に答える
0

オペレーティングシステムは、アプリケーション層で作成できるセマフォインスタンスの数に制限を設けています。この制限に達すると、それ以上スレッドを待機状態にすることはできません。この番号は、オペレーティングシステムに固有のものです。こちらがWindows用のリンクです

于 2012-07-16T07:53:10.153 に答える