-
sychronized实现可见性查看全部
-
sychronized查看全部
-
synchronized查看全部
-
实现可见性查看全部
-
内存模型查看全部
-
可见性查看全部
-
课程总结查看全部
-
课程总结查看全部
-
课程总结查看全部
-
synchronized和volatile这两种保证多线程中共享变量可见的方式的比较如下,结论是: 1:因为volatile消耗更小,所以,能满足时推荐使用 2:当volatile处理起来比较麻烦,只能牺牲点效率了——使用synchronized 3:volatile比synchronized更加轻量级,但使用受限所以使用不如synchronized使用的广泛查看全部
-
要在多线程中安全的使用volatile变量,必须同时满足: 1. 对变量的写入操作不依赖其当前值: 不满足:i++ ; 满足:boolean , 记录温度变化的变量 2. 该变量没有包含在具有其他变量的不变式中: 不满足:不变式low<up;满足: 6<7查看全部
-
释放锁查看全部
-
缩小锁粒度查看全部
-
1.将代码改成public synchronized void increase(){......} //因为有休眠100ms的操作,使得线程在等待锁synchronized会时间比较长 2.所以要缩小锁的力度 public void increase(){... synchronized(this){this.number++};}//看左图截图 1.ReentrantLock private Lock lock = new ReentrantLock();//可重入锁 public void increase() { lock.lock();//注意:锁内部的操作需要放到try...finally中执行 try{ this.number++;//number的可见性+number++的原子性 }finally{ lock.unlock();//释放锁资源 }查看全部
-
volatile不能保证原子性问题的解决方案查看全部
举报
0/150
提交
取消