ホームページ  >  記事  >  Java  >  Java 仮想マシン -- スレッドの安全性とロックの最適化

Java 仮想マシン -- スレッドの安全性とロックの最適化

伊谢尔伦
伊谢尔伦オリジナル
2016-11-26 09:26:161287ブラウズ

スレッドセーフティ

Java言語におけるスレッドセーフティ

1 不変。不変オブジェクトはスレッドセーフである必要があります

2. 実行時環境に関係なく、クラスが完全にスレッドセーフであるためには、通常、呼び出し元は追加の同期手段を必要としません。 Java API クラスは自らをスレッドセーフとしてマークしていますが、そのほとんどは完全にスレッドセーフではありません

3 相対的なスレッドセーフ

4 スレッド互換性 オブジェクト自体はスレッドセーフではありませんが、同期を正しく使用することで保証できます同時実行環境で安全に使用できることを意味します

5 スレッド反対

スレッドセーフの実装方法

1 相互排他と同期

共通の同時実行性の正確性を保証する携帯電話、同期とは、複数のスレッドが同時に実行される場合を指します。共有データにアクセスする ストレージ証明書の共有データは、同時に 1 つのスレッドによってのみ使用されます

最も基本的な相互排他方式は、synchronized キーワードです。

java.util.concurrent パッケージのロックを使用して同期を実現することもできます ReentrantLock、

JDK1.6 では同期が最適化されており、効率は基本的に ReentrantLock と同じです。

2 ノンブロッキング同期

競合検出に基づく楽観的な同時実行戦略

CAS操作の比較交換

3 非同期ソリューション

ロックの最適化

1. スピンロックと適応スピン

2. ロックの排除

3.ロックコースニング

4.レベルロック

5.バイアスロック


声明:
この記事の内容はネチズンが自主的に寄稿したものであり、著作権は原著者に帰属します。このサイトは、それに相当する法的責任を負いません。盗作または侵害の疑いのあるコンテンツを見つけた場合は、admin@php.cn までご連絡ください。