最終の詳細な分析は、最終的には、確定します

Java言語は似た外観の多くを持っていたが、彼らは完全に別の要素、そして最終的に、最終的には、ファイナライズを使用して、それはどのような違いですか?

最後の

最後のクラス、メソッド、変数を変更するために使用することができ、別の意味でそれぞれ、

  • 最終修正クラス表現は、拡張子を継承することはできません
  • 最終的に修正される変数を修正することができません
  • 最終的修飾法は上書きされていません

最終的な実行を参照の修正、

最後に

Javaは最終的に、我々は最終的には} {しようと{}または{}キャッチ(){}近くにようやく{} JDBC同様の接続を試すことができ、彼は私たちの例外メカニズムと組み合わせて使用​​することができ、コードが実行されることを保証するメカニズムに焦点を当てていますロックやその他の活動をロック解除保証します。

ファイナライズ

ファイナライズは、Javaのメソッドである、それがごみ収集される前に、それは、Javaオブジェクトに設計された特定のリソースの完全な回復、ファイナライズメカニズムは現在推奨されていません、
私たちは、資源回収に一般的に完成させるために願って、そしてなぜすることはできません?簡単に言えば、あなたは保証何時間finallize実行、期待に沿って実行するかどうか、不適切な使用は、デッドロックハングアップなどににつながる、パフォーマンスに影響を与えることができません。一般に、上記のtry {}最後に{}、特に追加の処理のために必要な場合、資源回収機構ためのアプローチであり、別の方法を提供するクリーナー機構(ガベージコレクション)を考慮し、またはJavaすることができます。

ファイナライズとゴミをコレクションに関連付けられているが、ファイナライズメソッドの呼び出しは、セット数の緩やかな回復をレンダリング対応するオブジェクトにつながる、それを具体的に研究を行った、メソッドの実装は、衰退の約40〜50倍の割合である、なぜならfinallizeは、オブジェクトをファイナライズ実装者は、供給の特別な方法であることを意味ガベージコレクションのためのオブジェクト自体の前に呼ばれるように設計されています。追加の治療のために彼にCDN、ファイナライズ自然の急速な回復への障害となって、それがリサイクルすることができ、複数のガベージ月経を通して、あなたのオブジェクトになることがあります。私たちは回復するJVMを知らせる場合は軽微であります。私たちは、それを使用接近しているJDBC接続プールは、彼が使用するため、次回の池を空にする、リソースのリリースであり、我々は回復を完成させるために予想される場合、それはメモリオーバーフローを引き起こす可能性があります。これだけのプログラムとして彼を聞かせてゴールキーパーは、ファイナライズいくつかのエラーメッセージをマスクします。

Javaは、ファントム参照を使用してすべての実装を確定クリーナートーンに置き換えます。これは彼がデッドロック状態を避けるために、自分自身のスレッドを持って、リソースが解放されていることを確認することができます参照ファントムまたはキューでクリーンアップメカニズムです。
ファントム参照メカニズムを使用するmysqljdbc。

隠された問題

その上でのパフォーマンス、同時実行、オブジェクトのライフサイクル、ガベージコレクションのプロセス面での問題。
こうした私たちのメソッドやクラスなど、多くの場面で達成することが証明されてきた我々のコードの意味やロジックを表現するための推奨最終キーワード密度は、あなたが明確に他の人に伝えることができるように、finalとして宣言することができ、これらのクラスやメソッドはありません変更することができます。あなたはJavaのオーバーコアライブラリとソースコードを気にする場合は、API関数の基礎を変更するには、ユーザー、プラットフォームを確保することである事態を防ぐことができ、クラスの多くは、最終的なクラスのJavaで宣言されていますセキュリティの必要な手段、最終的な修正方法または変数を使用しては、プログラミングエラーが事故のレイアウトを回避することができ、そしていくつかのも明白すべてのメソッドパラメータの推奨、ローカル変数は、メンバ変数は、ある程度、最終的な、最終的な農産物不変効果として宣言しました追加の同期オーバーヘッドが必要な防御的なコピーを省略することができる減らすのに役立ち、明らかにもはや割り当て、最終的な変数ので、多くのシナリオでfianlは、パフォーマンスを向上させることができ、特に並行プログラミングでは、保護読み取り専用データに使用することができますfianl CDN相互接続方法を行うことができることによって、コンパイラを向上させることができます ラインコンパイラ機能など、率直に言って、同様の結果が多くの仮定に基づいている拘束、必ずしもプロンプト最終的に依存しないで、そのような現代の高性能CDNの裁判官として、派生している場合、キーワードのパフォーマンスfianl影響は、検討する必要がなくなり、パフォーマンスを向上させるような方法で開発し、それが本当に必要ではありません。

最終的には基礎ペンの質問

public class finally_demo{
	
	public static char Label;

	public static void main(String[] args){
		System.out.println(test_finally());
		System.out.println(Label);

	}

	public static char test_finally(){
		try{
			System.out.println('A');
			return Label= 'A';
		}finally{
			System.out.println('B');
			Label= 'B';
		}

	)
}

出力:
ABAB

構造解析:
実行の順序が最終的に戻ってすることです何;:ポイント1.この質問が調査

実装プロセス:

フロント出力AB、ほとんどの人は、この二つの出力文の内部ためにTest1方法であることは間違いありません。

その後、

最初のラベル=「A」割り当て、

finally文の有無を検出した後、

あり、最終的には文が実行され、最終的な結果は、ラベルBの値があるので、ラベル=「B」、!;

最終的に文のリターンを返します(この時点ではBに等しいものの割り当て、ラベルをしませんが、最終的には文が実行されていない前に、まだ値だけが返されます)。

に準拠するカスタムルール不変クラスのニーズを作成します。

1、プライベートメンバ変数と最終的修飾の使用。

2は、メンバ変数を初期化するために使用されるコンストラクタのパラメータ、を備えています。

図3は、メンバ変数のsetterメソッドを提供していません。

クラスのメンバ変数に変数がある場合4、オーバーライドhashCodeメソッドする必要があり、オブジェクトのメソッドに等しいです

公開された69元の記事 ウォンの賞賛6 ビュー2495

おすすめ

転載: blog.csdn.net/qq_40539437/article/details/104038834