Java では、すべてのスレッドが同じヒープを使用します。スレッドが操作をヒープにキャッシュしている場合、正確にはいつヒープにフラッシュされますか?
非常に多くの投稿を読みましたが、答えを見つけることができません。
ありがとう。
Java では、すべてのスレッドが同じヒープを使用します。スレッドが操作をヒープにキャッシュしている場合、正確にはいつヒープにフラッシュされますか?
非常に多くの投稿を読みましたが、答えを見つけることができません。
ありがとう。
volatile
変数が複数のスレッドで変更される可能性があることをJavaに通知し、変数をキャッシュしないようにします。キャッシングはプロセッサレベルの構成であるため、プロセッサは必要なときにいつでもキャッシュをフラッシュできます。
他の例を挙げると、ユーザーに古いデータではなく最新のデータを表示したいStock Webサイトのような Web サイトがあります。右?
そのため、Web ページのキャッシュを無効にして、ページがどこにもキャッシュされず、すべてが最新のデータを更新するようにします。
の場合も同様でvolatile
、コアまたはプロセッサには独自のキャッシュがあり、現在のプロセッサで実行されているスレッドが変数の値を変更しないと考えて結果をキャッシュします。したがって、それをキャッシュし、キャッシュされた値を返します (これはハードウェア レベルのパフォーマンスのためです)。
したがって、Web サイトの例のように、古い値を使用して他のプロセッサを停止したい場合は、キャッシュを停止する必要がありvolatile
、Java でそれを行う方法です。