并发2018-11-27

版权声明:本文为博主原创文章,未经博主允许不得转载。 https://blog.csdn.net/zy1104560031/article/details/84560200

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:用时间换空间。

猜你喜欢

转载自blog.csdn.net/zy1104560031/article/details/84560200