0

3台のサーバーにデプロイするチャットサーバーアプリケーションがあります。チャットアプリケーションは多くのマルチスレッドを使用していました。

基本的に、これら3つのサーバーにどのOSを使用するかを決定する必要があります。だから私はLinuxとWindowsがJavaスレッドをどのように区別して処理するか知りたいです。違いはなんですか?オペレーティングシステムのスレッドを作成するのは誰ですか?彼らはどのようなメモリを割り当てていますか?

将来のスコープのスケーラビリティとクラスタリングの場合、どちらのオプションが優れていますか?

4

2 に答える 2

2

将来のスコープのスケーラビリティとクラスタリングの場合、どちらのオプションが優れていますか?

スケーラビリティとクラスタリングは、JVMや基盤となるOSではなく、コードの内部設計によって妨げられる可能性があります。そして、コードを非常に深く調べることなく、これに関するすべてのステートメントは単なるホットノイズですが、深遠なステートメントではありません。

しかし、Javaの良いところは、コードを変更せずに両方のプラットフォームで実行できることです。したがって、できる最善の方法は次のとおりです。同じハードウェア上で両方のOSをベンチマークし(ただし、いかなる種類の仮想化も使用しないでください!)、目的に最適なものを使用します。

于 2012-04-07T12:59:16.547 に答える
1

LinuxとWindowsがJavaスレッドを区別して処理する方法。

Javaの利点は、あまり気にしないことです。彼らはただ働く。しかし、本当に興味がある場合は、最新のJVMがスレッド処理をオペレーティングシステムに委任します。つまり、JavaというよりはOSの問題です。

違いはなんですか?

上記を参照。Javaはここではほとんど関係がありません。これは、ホストOSでスレッド化がどのように実装されるかについてです。

オペレーティングシステムのスレッドを作成するのは誰ですか?

JVMはOSにそれらを作成するように要求し、JavaThreadオブジェクトとネイティブスレッドの間に薄いラッパーを提供します。

彼らはどのようなメモリを割り当てていますか?

各スレッドは独自のスタックを取得します(-XssJVMオプションを参照)。また、すべてのスレッドが同じヒープスペースを共有します。

于 2012-04-07T12:48:24.580 に答える