たくさんの機能に恵まれたプログラミングの1つです。この記事では、Javaのvolatileキーワードであるそのような機能の1つを探求します。この記事では、次のポイントについて説明します。
Javaの揮発性キーワードに関するこの記事に進みます。
文字列javaから日付を取得します
volatileキーワードは、さまざまなスレッドによって変数の値を変更するために使用されます。また、クラスをスレッドセーフにするためにも使用されます。これは、複数のスレッドが問題なくクラスのメソッドとインスタンスを同時に使用できることを意味します。 volatileキーワードは、プリミティブ型またはオブジェクトのいずれかで使用できます。
例
クラステスト{staticint var = 5}
上記の例では、2つのスレッドが同じクラスで動作していると想定しています。両方のスレッドは異なるプロセッサで実行され、各スレッドにはvarのローカルコピーがあります。スレッドがその値を変更した場合、その変更はメインメモリの元のスレッドには反映されません。他のスレッドが変更された値を認識しないため、データの不整合が発生します。
クラステスト{staticvolatile int var = 5}
上記の例では、静的変数はすべてのオブジェクト間で共有されるクラスメンバーです。メインメモリにはコピーが1つだけあります。揮発性変数の値がキャッシュに保存されることはありません。すべての読み取りと書き込みは、メインメモリとの間で行われます。
Javaの揮発性キーワードに関するこの記事に進みます。
同期とvolatileキーワードの違い
揮発性キーワードは同期キーワードの代わりにはなりませんが、場合によっては代替として使用できます。次の違いがあります。
揮発性キーワード | 同期キーワード |
Volatileキーワードはフィールド修飾子です。 | Synchronizedキーワードは、コードブロックとメソッドを変更します。 |
揮発性の場合、スレッドは待機をブロックできません。 | 同期されている場合、スレッドは待機をブロックできます。 |
スレッドのパフォーマンスが向上します。 | 同期されたメソッドは、スレッドのパフォーマンスを低下させます。 |
スレッドメモリとメインメモリ間で一度に1つの変数の値を同期します。 | スレッドメモリとメインメモリの間ですべての変数の値を同期します。 |
揮発性フィールドは、コンパイラーの最適化の対象ではありません。 | Synchronizeは、コンパイラーの最適化の対象となります。 |
Javaの揮発性キーワードに関するこの記事に進みます。
例:
public class VolatileTest {private static final Logger LOGGER = MyLoggerFactory.getSimplestLogger()private static volatile int MY_INT = 0 public static void main(String [] args){new ChangeListener()。start()new ChangeMaker()。start()} static class ChangeListener extends Thread {@Override public void run(){int local_value = MY_INT while(local_value<5){ if( local_value!= MY_INT){ LOGGER.log(Level.INFO,'Got Change for MY_INT : {0}', MY_INT) local_value= MY_INT } } } } static class ChangeMaker extends Thread{ @Override public void run() { int local_value = MY_INT while (MY_INT <5){ LOGGER.log(Level.INFO, 'Incrementing MY_INT to {0}', local_value+1) MY_INT = ++local_value try { Thread.sleep(500) } catch (InterruptedException e) { e.printStackTrace() } } } } }
これで、「Javaの揮発性キーワード」に関するこの記事は終わりです。詳細については、信頼できるオンライン学習会社であるEdurekaによるJavaトレーニングをご覧ください。エドゥレカの このコースは、HibernateやSpringなどのさまざまなJavaフレームワークとともに、コアJavaの概念と高度なJavaの概念の両方についてトレーニングするように設計されています。
Windows10でPHPを実行する方法
質問がありますか?このブログのコメントセクションでそれについて言及してください。できるだけ早くご連絡いたします。