ホームページ  >  記事  >  Java  >  Java の古典的な面接質問集 (4)

Java の古典的な面接質問集 (4)

王林
王林転載
2020-07-09 16:28:212347ブラウズ

Java の古典的な面接質問集 (4)

#1. リフレクション メカニズムのアプリケーション シナリオ #(関連チュートリアルの推奨事項:

Java インタビューの質問

)

    逆コンパイルなどのコードをリバースする
  1. Retrofit などのアノテーションと組み合わせたフレームワーク
  2. 単純なリフレクション メカニズム アプリケーション フレームワークEventBus 2 など。xx
  3. Gson などの動的に生成されたクラス フレームワーク
2. マルチスレッドとは何ですか?

マルチスレッドとは、ソフトウェアやハードウェアから複数のスレッドの同時実行を実現する技術のことです。プログラムにおいて、このように独立して動作するプログラムの断片を「スレッド」と呼び、これを利用してプログラミングする概念を「マルチスレッド」と呼びます。

マルチスレッド機能を備えたコンピューターは、ハードウェアのサポートにより複数のスレッドを同時に実行できるため、全体的な処理パフォーマンスが向上します。

Java の古典的な面接質問集 (4)#メインスレッドは、作成処理で最初に生成されるスレッドであり、main 関数に対応するスレッドです。

(推奨学習:

java 入門プログラム

)

3. マルチスレッドの利点について教えてください。

#1. マルチスレッドの利点

新しいスレッドを作成するコストは、新しいプロセスを作成するよりもはるかに小さくなります
  • プロセス間の切り替えと比較して、スレッド間の切り替えでは、オペレーティング システムが行う作業はほとんど必要ありません。
  • スレッドが占有するリソースはプロセスよりはるかに少なくなります
  • マルチプロセッサの並列数を最大限に活用できる
  • #遅い IO 操作が終了するのを待った後、プログラムは他のコンピューティング タスクを実行できます

  • コンピューティング (CPU) 集中型アプリケーション。マルチプロセッサ システムで実行するために、計算は複数のスレッドに分割され、

  • IO 集中型を実装します。アプリケーションでは、パフォーマンスを向上させるために IO 操作が重複し、スレッドが別の IO 操作を待機することがあります。

  • 2. マルチスレッドの欠点

パフォーマンスの損失 (コンピューティング集約型のスレッドが外部イベントによってブロックされることはほとんどなく、他のスレッドと通信できなくなります)スレッドは同じプロセッサを共有します。計算負荷の高いスレッドの数が使用可能なプロセッサよりも多い場合、パフォーマンスが大幅に低下する可能性があります。ここでのパフォーマンスの低下とは、追加の同期とスケジューリングのオーバーヘッドを指します。使用可能な 2 つのリソースは変更されません。)

  • 堅牢性が低下します (スレッド間の保護が欠如しています。マルチスレッド プログラムでは、時間割り当てのわずかな違いや、誤ったプログラムの共有により、悪影響が生じる可能性があります)。

  • アクセス制御の欠如 (プロセスがアクセス制御の基本的な粒度であるため、スレッド内で特定の OS 関数を呼び出すと、

  • プログラミングの難易度の上昇 (マルチスレッド プログラムの作成とデバッグは、シングルスレッド プログラムよりもはるかに困難です。)

  • 4. スレッドとプロセスの違いは何ですか?

1. スケジューリングプロセスは、オペレーティング システムがリソースを割り当てるための基本単位です。スレッドは CPU スケジューリングの基本単位です。

2. 同時実行性

スレッドの導入後は、プロセスを同時に実行できるだけでなく、プロセス内の複数のスレッドを同時に実行することもでき、プロセス内のすべてのプロセスを 1 つ実行することもできます。同時に。

同様に、異なるプロセスのスレッドを同時に実行することもできます。これにより、OS の同時実行性が向上し、リソース使用率とシステム スループットが向上します。

3. リソースの所有

プロセスはリソースを所有でき、システムがリソースを所有するための基本単位です。スレッド自体はシステム リソースを所有せず、独立した動作を保証できる一部のリソースのみを所有し、このリソースは各スレッドにとってプライベートです。

たとえば、スレッド ID、レジスタのセット、スタック、errno、シグナル マスク ワード (プロセス内に保留中のシグナルは 1 つだけありますが、どのスレッドでもこのシグナルを処理できます)、スケジューリング優先度などです。

4. 独立性

同じプロセス内のスレッドの独立性は、別のプロセス内のスレッドの独立性よりもはるかに低くなります。

5. システム オーバーヘッド

スレッド切り替えのコストはプロセス切り替えのコストよりも低くなります。

6. マルチプロセッサ システムのサポート

従来のプロセス、つまりシングルスレッド プロセスの場合、プロセッサーの数に関係なく、プロセスは同じプロセッサー上でのみ実行できますが、マルチスレッド プロセスの場合は、プロセス内の複数のスレッドを複数のプロセッサーに割り当てることができます。そのため、同時実行によりプロセスの完了が高速化されます。

(ビデオ チュートリアルの推奨:

java ビデオ チュートリアル

)

5. プロセスとスレッドのアプリケーション シナリオ

Java の古典的な面接質問集 (4) 優先スレッドを頻繁に作成および破棄する必要があります。

  • 大量の計算を必要とするスレッドを優先します。

  • スレッドは強い相関関係に使用され、プロセスは弱い相関関係に使用されます。

  • マルチマシン分散にはプロセスを使用し、マルチコア分散にはスレッドを使用するように拡張できます。

  • 以上がJava の古典的な面接質問集 (4)の詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。

    声明:
    この記事はcsdn.netで複製されています。侵害がある場合は、admin@php.cn までご連絡ください。