併發2018-11-27
阿新 • • 發佈:2018-12-03
volatile關鍵字,使一個變數在多個執行緒間可見。
使用volatile,將會強制所有執行緒都去堆記憶體讀running的值。
synchronized:既有可見性又有原子性。volatile只是保障了可見性(效率高)。
synchronized和volatile的區別?
wait和notify:wait()釋放鎖
count.incrementAndGet();//代替count++ 具有原子性。
threads.add(new Thread(t::m,"thread"+i));
if,while(wait()與while一起)線上程中的區別:
while (lists.size() == Max) { try{ this.wait(); }catch (Exception e){ System.out.println(e); } }
while每次執行都先做判斷,if執行之後就不做判斷了
while執行緒不結束還會再判斷,if如果有另一個執行緒佔有了,就不會去判斷,會直接執行下面的程式碼。
ThreadLocal:用空間換時間,synchronized:用時間換空間。