Java の高度なアプリケーション

1. 例外処理

例外処理とは、プログラム内で発生する可能性のあるエラーに対して例外をスローすることです。プログラムを終了するか、エラー状態を回避するために続行してください。使用する必要がある構文は try (avoid) です。throws (スロー可能な条件)。

実際の開発では例外処理が必要になります。たとえば、例外処理がない場合はコンパイル例外が発生するためです。次のような一般的なプログラムはコンパイルされません; //これはコンパイル時に可能ですが、Java は厳密な言語です。

 基本コンセプト:

珍しいアーキテクチャ:

 主な例外の種類:

Java例外処理の方法。

方法は 2 つあります。 方法 1: try-catch-finally

              方法 2: スロー + 例外タイプ

12. トライキャッチの使用

まず、例外を処理する最初の方法を紹介します。これがキャッチアンドスローモデルの治療法です。これはコンパイル例外と実行例外で使用されますが、その中でも実行例外をこのように使用すると便利です。コンパイルされた例外を記述する必要があるため、スローを介してコーディングする方が簡単だと感じます。

基本コンセプト:

 

予防:

try-catch を使用する場合は、例外クラスの継承関係に注意する必要があります。サブクラス例外は上に配置されます。Ctrl+h を押すと、継承関係を表示できます。

例外クラスに存在する 2 つのメソッド、printStackTrace() と getMessage に留意する必要があります。

13.finallyの使用

finally は try-catch と組み合わせて使用​​され、データベース操作およびデータ フロー操作において不可欠な操作です。これは、実行が保証されているコードのブロックです。リターンよりも優先度が高くなります。このような操作は、データ ストリームを閉じたり、データベース接続を切断したりするためにデータ ストリームに対して使用されます。これによりメモリ リークが防止されます。シャットダウン操作がない場合。データベースへの外部接続がまだ存在するため、gc メカニズムがデータベースをリサイクルしない可能性があります。したがって、メモリリークが発生します。優先度が高くなります。以下の図を参照してください。

この質問の最終結果は、11 がスタックの一時スペースに関連しているということに注意してください。 

基本コンセプト:

使用理由:

 主な理由はメモリ リークを防ぐことですが、最終的には他の状況でも使用されます。たとえば、catch コード ブロックでも例外が発生します。後続のコードを実行できるようにするため。最後に追加する必要があります。これにより、コードの堅牢性も向上します。

拡張機能: 単体テスト

単体テストを作成するには 2 つの方法があり、ネットワークの場合は 2 番目の方法が最も簡単です。

2 番目の方法: 

 

面接の質問:

 最終的なスタイル:

14. 例外処理メソッド2 throws

2 番目のタイプの例外処理はスローです。この方法は擬似的に例外を処理します。その本質は、親クラスまたはメイン プログラム クラスに例外をスローすることです。この方法は、複数のサブカテゴリがある大規模な開発シナリオでよく使用されます。ただし、コンパイル例外の場合は、メイン クラスで例外の try-catch を処理する必要があります。例外を実行する場合、スローされた例外を処理する必要はありません。

基本コンセプト:

エッセンスは例外を処理しませんでした。

 例外処理方法の選択方法:

「手動」および「自動」で例外をスローすることについて理解します。

手動で例外をスローする必要があり、これは特定のシナリオを満たさないコードの問題に使用されます。たとえば、学生の ID<0 が入力された場合、シーンの要件は満たされませんが、プログラムは問題が発生しません。手動で例外をスローする必要があります。id を 0 未満にすることはできません。このメソッドは if-else よりも便利です。

 

投げに関する注意:

例外クラスをカスタマイズするにはどうすればよいですか?

列挙型クラスの例: (オブジェクト指向の知識を参照)

2、マルチスレッド化

マルチスレッドは実際にはプロセス内の実行プロセスです。例: qq メッセージ ボックス、メッセージの送信はプロセスです。複数のメッセージ ボックスは複数のスレッドです。以下はプロセス (赤線のボックス) であり、プロセス内にはさまざまなスレッドがあります。

プログラム、プロセス、スレッド

  • プログラム: 特定のタスクを実行するために言語で書かれたプログラム一组指令的集合つまり一段静态的代码、静的オブジェクトです。

  • プロセス: プログラムの実行、またはメモリ内で実行されるアプリケーション例: QQ 動作中、Netease 音楽プレーヤー動作中。

    • 各プロセスには独立したメモリ空間があります. システム内でプログラムを実行することは、作成、操作、終了までのプロセスのプロセスです。(ライフサイクル)

    • プログラムは静的、プロセスは動的

    • プロセス操作系统调度和分配资源的最小单位(プログラムを実行するシステムの基本単位でもあります) として、システムは実行時にプロセスごとに異なるメモリ領域を割り当てます。

    • 最新のオペレーティング システムのほとんどはマルチプロセスをサポートし、複数のプログラムの同時実行をサポートします。例: 現在、授業中にエディターと画面録画ソフトウェアを使用していますが、同時にドローイング ボード、DOS ウィンドウ、その他のソフトウェアも開きます。

  • スレッド (スレッド) : プロセスは、プログラムの内部にある一条执行路径スレッドにさらに細分化できますプロセスには少なくとも 1 つのスレッドがあります。

    • プロセスが複数のスレッドを同時に并行実行する場合、そのプロセスはマルチスレッドをサポートします。

並列処理と同時実行の概念を理解する必要があります。

並列処理は、複数の人が何かを行うこととして理解できます。

同時実行とは、1 人が複数のことを行うことです。そしてすべてがインタラクティブである必要があります。

プリエンプティブなスケジューリング:

优先级高最初にスレッドに较大的概率CPU を使用させます。スレッドの優先順位が同じ場合、スレッドの 1 つがランダムに選択され (スレッドのランダム性)、Java はプリエンプティブ スケジューリングを使用します。

なぜマルチスレッドを学ぶ必要があるのでしょうか?

背景:シングルコア CPU を例にとると、単一のスレッドだけを使用して複数のタスクを次々に完了する (複数のメソッドを呼び出す) ほうが、複数のスレッドを使用して完了するよりも明らかに時間がかかります。

マルチスレッド プログラムの利点:

  1. アプリケーションの応答性を向上させます。グラフィカル インターフェイスにとってより意味があり、ユーザー エクスペリエンスが向上します。

  2. コンピュータシステムのCPU使用率を改善する

  3. プログラム構造を改善します。長く複雑なプロセスを複数のスレッドに分割し、独立して実行することで、理解と変更が容易になります。

使用シナリオ: FTP ダウンロード、データベース、分散コンピューティング、ブラウザ Web サービス、バックグラウンド タスク。

 タオバオがアリペイに飛びつくなど、プロセス間のデータ交換のコストは非常に高い。

21. スレッド作成方法1:

ステップ 1 と 2 では、サブクラスとオーバーライドされたメソッド run() を追加作成する必要があります。呼び出し方法は次のとおりです。 ここでは、それぞれ異なるスレッドを使用するマルチスレッドの例を示します。

 

 マルチスレッドの例:

予防: 

 

 

匿名サブクラスを通じて匿名オブジェクトを作成します。

22. スレッド作成方法2:

実装:

23. 2 つの作成方法を比較します。

拡張例: 

24. ねじ山共通構造方式

スレッド内のコンストラクター:

スレッドで一般的に使用されるメソッド:

 ライフサイクル:

25. スレッドの安全性の問題

スレッド セーフティの問題は、複数のスレッドが同じリソースにアクセスすると、すべてのスレッドがリソースの読み取りまたは書き込みを行うため、セキュリティ上の問題が発生しやすいことです。たとえば、複数のスレッドが同時に実行されている () などです。次に、最初のデータ削減が終了する前に、2 番目のプロセスがデータにアクセスします。その結果、最終結果は同じ名前になるか、負の数になる場合もあります。

基本コンセプト:

スレッド同期機構(セーフティロック):

同期の原理: 

 サンプルスキームとメモ:

synchronized はメソッドであり、内部のパラメータはオブジェクトであり、それらが唯一のオブジェクトです。

1 つ目は、インターフェイスを実装する方法で同期ロックの問題を実行することです。

インターフェイスの方法は同じインスタンス空間を共有することであり、これが唯一のインスタンス オブジェクトを表すことができることに注意してください。

 2 番目の方法は、継承の方法で同期ロックの問題を実装します。

継承は単一継承であることに注意してください。これは、3 つのプロセスを呼び出すと 3 つの継承スペースが使用されることを意味します。だって、これが唯一のオブジェクトではないからです。このとき、一意のオブジェクトを表すためにこの class.class を使用する必要があります。

 

 まとめ:


あまりにも効率が悪いのでコピペ作業ばかりしてしまい、一旦この方法を諦めました。選択して、他の人の一致する学習ノートから始めてください。章を学習するたびに、知識ポイント全体を復習してください。条件:記憶力、真剣な姿勢。効率。

おすすめ

転載: blog.csdn.net/qq_55928086/article/details/132211843