对象中属性 加锁 用:volatile 关键词修饰 而 不用 synchronized 加锁
2015-04-21 13:44
239 查看
一个对象中有一个状态 属性,现在业务需求 存在多线程来修改 和 拿去 这个状态 的值,这种情况如果加锁怎么加?
一种是 在 set 和get 这个状态的 方法那加 synchronized 。
还有一种方法 是set 方法那还是通过 synchronized 加锁,而 get 那就不用synchronized 加锁,而是 通过 volatile 关键词 来修饰
即 在对象 中定义 这个状态属性变量 名字 时 在属性 前加上这个关键词,eq:
一种是 在 set 和get 这个状态的 方法那加 synchronized 。
还有一种方法 是set 方法那还是通过 synchronized 加锁,而 get 那就不用synchronized 加锁,而是 通过 volatile 关键词 来修饰
即 在对象 中定义 这个状态属性变量 名字 时 在属性 前加上这个关键词,eq:
private volatile byte status; 这样子就 保证多线程拿的 status 是同一份,这样做法就等同于 在get 方法 前 加 synchronized 。
相关文章推荐
- 一张图讲解对象锁和关键字synchronized修饰方法
- synchronized修饰方法和对象的区别
- 输出一个对象的所有属性的值,可以不用反射机制,用JSON处理更方便
- 一张图讲解对象锁和关键字synchronized修饰方法
- volatile关键字不具备synchronized关键字的原子性(同步),Atomic前缀修饰变量 具有原子性
- java学习日记_38:final关键词的引入和修饰对象的特点
- 2018/01/08JAVA 基础 / 接口与继承/Java关键词:变量引用 super 调用父类对象方法/构造方法【或者访问父类对象属性】的方式归纳
- 多线程:线程状态、synchronized关键字、读写锁、条件对象、Volatile、阻塞队列等小结
- 一张图讲解对象锁和关键字synchronized修饰方法(代码块)
- 面向对象中的修饰关键词
- iOS开发 - 不用copy修饰的字符串属性什么情况下不安全
- 注意this用法,以及当用static 修饰属性时,无论生成多少个对象,其共同拥有一个属性,不再各自拥有自己的属性
- synchronized关键字修饰对象锁,同步与非同步对该方法的访问及修改
- 同一种类型的两个对象赋值,用反射。再也不用点属性了。。。。(适用于ef)
- 多线程的相关关键词理解 volatile,atomic,synchronized,lock
- 关于OC对象属性中的NSString类型为什么用copy修饰
- FMDB封装,用OC方法存储model,不用写SQL语句。使用runtime获取对象属性
- synchronized修饰函数和封装变量的对象两处需要注意的地方
- synchronized同步机制,修饰类和修饰对象的区别
- java transient变量修饰符,修饰不用序列化属性