1. 程式人生 > >併發2018-11-27

併發2018-11-27

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:用時間換空間。