首页 > 编程语言 >【㉿Java并发】对象有状态 & 无状态

【㉿Java并发】对象有状态 & 无状态

时间:2023-05-27 14:44:27浏览次数:33  
标签:状态 Java billDao Bean 并发 state user public

有状态就是有数据存储功能。有状态对象(Stateful Bean),就是有变量的对象,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。

实例变量和类变量都是状态变量

无状态就是一次操作,不能保存数据。无状态对象(Stateless Bean),就是没有实例 变量的对象.不能保存数据,是不变类,是线程安全的。

看代码加深印象

/** 
 * 有状态bean,有state,user等属性,并且user有存偖功能,是可变的。 
 */ 
public class StatefulBean {  

    public int state;  
    // 由于多线程环境下,user是引用对象,是非线程安全的  
    public User user;  

    public int getState() {  
        return state;  
    }  

    public void setState(int state) {  
        this.state = state;  
    }  

    public User getUser() {  
        return user;  
    }  

    public void setUser(User user) {  
        this.user = user;  
    }  
}  

/** 
 * 无状态bean,不能存偖数据。因为没有任何属性,所以是不可变的。只有一系统的方法操作。 
 */ 
public class StatelessBeanService {  

    // 虽然有billDao属性,但billDao是没有状态信息的,是Stateless Bean.  
    BillDao billDao;  

    public BillDao getBillDao() {  
        return billDao;  
    }  

    public void setBillDao(BillDao billDao) {  
        this.billDao = billDao;  
    }  

    public List<User> findUser(String Id) {  
        return null;  
    }  
}

Spring中的有状态(Stateful)和无状态(Stateless)

1)通过上面的分析,相信大家已经对有状态和无状态有了一定的理解。无状态的Bean适合用不变模式,技术就是单例模式,这样可以共享实例,提高性能。有状态的Bean,多线程环境下不安全,那么适合用Prototype原型模式。Prototype:每次对bean的请求都会创建一个新的bean实例。

 

标签:状态,Java,billDao,Bean,并发,state,user,public
From: https://www.cnblogs.com/xfeiyun/p/17436706.html

相关文章

  • Java基础
    Java基础将一个对象作为参数传递是值传递还是引用传递?java中只有值传递没有引用传递!!!无论是基本数据类型还是引用类型都是值传递,引用类型传递的时地址的值newstring()和string的区别?newString是在堆空间中创建对象,而string是直接在常量池中赋值String不能被继承(Str......
  • Day2-java泛型与集合
     ArrayList类的使用Set接口及实现类的使用了解对象顺序,Comparable接口及其使用Queue接口和实现类的使用了解Map接口及实现类的使用Collections类的实用方法操作List对象StreamAPI的使用了解泛型类型 取出和输入不用强制类型转换泛型是带一个或多个类型......
  • java中HashMap的实现原理
    HashMap是Java中常用的一种存储结构,它通过哈希表实现了快速查找数据的功能,下面是它的具体实现原理:HashMap内部存储结构HashMap的内部实现是一个数组和一个链表组成的。数组称为哈希表,用于保存实际存储的数据,链表则用于处理哈希冲突,即不同的键值对可能会被存储到哈希表的同一个位置......
  • jdepend java 包依赖分析库
    jdepend是一个java库,可以通过便利源码以及javaclass生成每个java包的质量metrics说明对于比较关心代码质量,或者需要在持续交付中关注质量metrics的jdepend是一个值得使用的工具参考资料https://github.com/clarkware/jdepend......
  • liteflow 一个强大的java 规则框架
    liteflow是一个java规则引擎,融合了编排以及规则引擎的能力,功能上很强大,支持比较复杂的编排(swtich,when,if,while,for。。。)同时还支持的不少的脚本引擎,我们同时还可以将规则存储在外部,实现一些规则管理以及reload说明liteflow对于java生态集成的特别好,是一个很不错的开源规则引......
  • 小马哥Java分布式架构训练营第一期服务治理-鱼龙潜跃水成文
    小马哥Java分布式架构训练营第一期服务治理download:3w51xuebccom使用Netty和SpringBoot实现仿微信的示例在本文中,我们将使用Netty和SpringBoot框架来创建一个简单的聊天应用程序,类似于微信。这个应用程序将支持多用户聊天和即时消息发送。下面让我们来一步步看看如何实现。第一......
  • 使用fx.Parallel方法并发执行函数时遇到的惰性计算的坑
    错误的写法packagescripts_stroageimport("encoding/hex""fmt""github.com/zeromicro/go-zero/core/fx""math/rand""sync""testing""time")varfns[]func()......
  • JAVA的内部类
    JAVA的内部类写在一个类里面的类就叫内部类分类成员内部类:写在成员位置的,属于外部类的成员静态内部类:是一种特殊的成员内部类局部内部类:将内部类定义在方法里面匿名内部类:隐藏了名字的内部类,可以写在成员位置也可以写在局部位置获取成员内部类的两种方法当成......
  • Java语言的简单介绍
    1.计算机语言概述​计算机语言是一种特殊的语言。因为它是用于人与计算机之间传递信息的,所以人和计算机都能“读懂”。具体地说,一方面,人们要使用计算机语言指挥计算机完成某种特定动作,就必须对这种工作进行特殊描述,所以它能够被人们读懂。另一方面,计算机必须按计算机语言描......
  • java开发学习框架
    Java基础1.1.Java简介与安装1.2.Java基本语法1.3.数据类型与变量1.4.运算符与表达式1.5.流程控制(分支与循环)1.6.数组面向对象编程2.1.类与对象2.2.继承与多态2.3.接口与抽象类2.4.封装与访问控制2.5.重载与覆盖2.6.Java内存管理与垃圾回收Java常用......