Java中的volatile關鍵字

2021-08-17 02:57:54 字數 870 閱讀 5124

//執行緒1

boolean stop = false;

while(!stop)

//執行緒2

stop = true;

第二:使用volatile關鍵字的話,當執行緒2進行修改時,會導致執行緒1的工作記憶體中快取變數stop的快取行無效(反映到硬體層的話,就是cpu的l1或者l2快取中對應的快取行無效);

第三:由於執行緒1的工作記憶體中快取變數stop的快取行無效,所以執行緒1再次讀取變數stop的值時會去主存讀取。

public

class test

public

static

void

main

(string args)

; }.start();

}while(thread.activecount()>1) //保證前面的執行緒都執行完

thread.yield();

system.out.println(test.inc);

}}

volatile

boolean flag = false;

//執行緒1

while(!flag)

//執行緒2

public

void

setflag

()

class singleton

public

static singletongetinstance(

) }

return instance;

}}

java中 this,final,super關鍵字

1.this關鍵字 1 this表示當前類的例項化物件。2 this呼叫本類中的屬性,如果本類中沒有此屬性,將從父類中繼續查詢。3 this呼叫本類中的方法,如果本類中沒有此方法,將從父類中繼續查詢。4 this可以呼叫本類中的構造方法。class person 呼叫自身的構造方法,這種寫法只能存在...

JAVA中的volatile關鍵字

大家最熟悉的保證執行緒安全的技術是lock和synchronized塊 後面就統稱鎖了 但如果在一些對排他性 一會介紹 沒有太多限制的變數上使用鎖會花費很多時間和資源,為了優化程式效能,就有了volatile。鎖提供兩種特性 排他性和可見性。排他性很好理解,就是只有乙個執行緒可以對鎖住的東東進行操作...

java多執行緒中volatile的理解

一 使用runnable來實現多執行緒 package com.xiancheng.old public class threadold implements runnable catch interruptedexception e falg true public boolean isfalg ...