-
synchronized和valatile比较 1、volatile不需要加锁,比synchronized更轻量级,不会阻塞线程。 2、synchronized既能保障可见性又能保证原子性,而volatile只能保证可见性,无法保证原子性。查看全部
-
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解决原子性的方案查看全部
-
//如果还有子线程在运行,主线程就让出CPU资源 //直到所有的子线程都运行完了,主线程再继续往下执行 while(Thread.activeCount()>1){ Thread.yield(); }查看全部
-
volatile实现可见性的方法查看全部
-
导致共享变量在线程间不可见的原因: 1. 线程交叉执行 2. 重排序结合线程交叉执行 3. 共享变量更新后的值没有在工作内存与主内存间及时更新查看全部
-
线程解锁前,必须把工作内存的内容放入主内存中,线程解锁后,从主内存中读取内容,工作内存的内容要清空查看全部
-
共享变量可见性实现的原理: 线程1对共享变量的修改要想被线程2及时看到,必须经过如下2个步骤: 1. 把工作内存1中更新过的共享变量刷新到主内存中 2. 将主内存中最新的共享变量的值更新到工作内存2中查看全部
-
//如果还有子线程在运行,主线程就让出CPU资源查看全部
-
volatile实现可见性的方法查看全部
-
导致共享变量在线程之间不可见的原因查看全部
-
synchronized 实现可见性查看全部
-
volatile实现可见性查看全部
-
synchronized加锁与解锁需要对共享变量进行一些操作查看全部
-
dddddd查看全部
举报
0/150
提交
取消