美文网首页
无状态对象

无状态对象

作者: 会议室窗边 | 来源:发表于2020-07-13 12:05 被阅读0次
    对象就是操作和数据的封装。对象所包含的数据被称为该对象的状态,它包括存储在实例变量或者静态变量之中的数据。一个对象的状态也可能包含该对象引用的其他对象的实例或者静态变量中的数据。相应地,实例变量、静态变量也被称为状态变量。如果一个类的同一个实例被多个线程共享并不会使这些线程存在共享状态,那么这个类及其任意一个实例就被称为无状态对象。反之,如果一个类的同一个实例被多个线程共享,会使这些线程存在共享状态,那么这个类及其任意一个实例就被称为有状态对象。无状态对象不含任何实例变量,且不含任何静态变量或者其包含的静态变量都是只读的,有状态对象又可以分为状态可变对象和状态不可变对象。所谓状态可变就是,对象在其生命周期中,其状态变量的值可以发送变化。
  我们知道线程安全问题产生的前提是多个线程之间存在共享数据。因此,实现线程安全的一种自然的方法就是避免在多个线程之间共享数据。使用无状态对象就是这样一种自然的办法:一个线程执行无状态对象的任意一个方法来完成某个计算的时候,该计算的瞬时状态仅体现在局部变量和(或)只有当前执行线程能够访问的对象的状态上。因此,一个线程执行无状态对象的任何方法都不会对该无状态对象的其他线程产生任何干扰作用。所以,无状态对象具有固定的线程安全性,它可以被多个线程共享,而这些线程在执行该对象的任何方法时都无须使用同步机制。

相关文章

  • JAVA synchronized锁升级

    若对象为无锁状态,修改对象头中的锁状态为偏向锁,并在对象头中记录当前线程id; 若对象为偏向锁状态,检查对象头中的...

  • Hibernate【缓存】知识要点

    对象状态 Hibernate中对象的状态: 临时/瞬时状态 持久化状态 游离状态 学习Hibernate的对象状态...

  • 无状态对象和有状态对象

    无状态对象 没有状态 只有只读属性,没有可写属性 有状态就是有数据存储功能。有状态对象(StatefulBean...

  • 无状态对象和有状态对象

    有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,是非线程安...

  • 有状态对象和无状态对象

    1、线程安全要搞清楚有状态对象和无状态对象,首先需要弄清楚线程安全的问题。如果你的代码所在的进程中有多个线程在同时...

  • Synchronized(二)

    上集说到,Java的对象头里可以标记对象锁的状态:无锁,偏向锁,轻量级锁,重量级锁,我们进一步分析四种锁的状态 J...

  • 无状态对象

  • 状态模式

    状态(State)模式的定义:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态...

  • iOS设计模式之状态模式

    状态(State)模式:对有状态的对象,把复杂的“判断逻辑”提取到不同的状态对象中,允许状态对象在其内部状态发生改...

  • Java并发编程实战:第二章线程安全性

    线程安全性 几个概念 对象的状态 对象的状态指的是,存储在状态变量中的数据。对象的状态可能包括其他依赖对象的域。 ...

网友评论

      本文标题:无状态对象

      本文链接:https://www.haomeiwen.com/subject/dfracktx.html