//執行緒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 ...