2012-04-07 18 views
0

私は3つのサーバーに展開するチャットサーバーアプリケーションを用意しています。チャットアプリケーションはマルチスレッドの多くを使用しました。Javaスレッド:Windowsの場合とLinuxの場合

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

将来のスコープでスケーラビリティとクラスタリングのどちらが優れているのであれば、

+0

この宿題はありますか? –

答えて

1

どのようにLinuxとWindowsがJavaスレッドを区別して処理するか。

Javaの美しさは、あなたが本当に気にしないことです。彼らはうまくいく。しかし、あなたが本当に好奇心が強いなら、現代のJVMはスレッド処理をオペレーティングシステムに委譲します。だから、JavaよりもむしろOSに関する質問のほうが多いです。

どういう違いがありますか?

上記を参照してください。 Javaはここではほとんど行いません。これは、ホストOSでのスレッドの実装方法です。

誰がオペレーティングシステムスレッドを作成しますか?

JVMはOSにオブジェクトの作成を依頼し、Java Threadオブジェクトとネイティブスレッド間のシンラッパーを提供します。

どのようなメモリが割り当てられていますか?

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

2

将来のスコープのスケーラビリティとクラスタリングでは、どのオプションが優れているのですか?

スケーラビリティとクラスタリングは、おそらくないJVMによっても基盤となるOSによってあなたコードの内部設計によって妨げられています。 非常に深いコードを見て、これについてのすべての文はちょうど騒音ですが、深遠な声明ではありません。

しかし、Javaの素晴らしい点は、コードを変更せずに両方のプラットフォームで動作することです。つまり、同じハードウェア上の両方のOSをベンチマークします(ただし、どのような種類の仮想化も使用しないでください)。目的に合わせて最適なものを使用してください。

関連する問題