zoukankan      html  css  js  c++  java
  • Java 有状态和无状态对象的区别

    无状态会话Bean 

      无状态就是对于一次操作,不能保存数据。无状态对象(Stateless Bean)是没有实例变量的对象,不能保存数据,是不变类,是线程安全的。例如: 
    public class A {  
       public A() {}  
       public String hello() {  
          return "Hello 谁?";  
       }  
    }  
      
    public class Client {  
       public Client() {  
          A a = new A();  
          System.out.println(a.hello());  
          A b = new A();  
          System.out.println(b.hello());  
       }  
    }

      在Client中生成了两个A的实例,不管是对象a还是b,它们是没有状态的。对于Client来说a和b是没有差别的(但a != b)。所以同一个无状态会话Bean的实例都是相同的,可以被不同的客户端重复使用。 

    有状态会话Bean 

     
      也称为有状态对象(Stateful Bean),就是有实例变量的对象,可以保存数据,是非线程安全的。在不同方法调用间不保留任何状态。
    public class B {  
          private String name;  
          public B(String arg) {  
          this.name = arg;  
          }  
          public String hello() {  
             return "Hello" + this.name;  
          }  
       }  
      
       public class Client {  
          public Client() {  
             B a = new B("中国");  
             System.out.println(a.hello());  
             B b = new B("世界");  
             System.out.println(b.hello());  
          }  
       } 

      其实线程池的概念同数据连接池概念基本相同,都是为了提高系统性能而设计的。就像是饺子馆一样,饺子的做法可以有两种,一种是不管当前有没有客人,先将一些饺子下锅,等到客人就座后可以马上捞出来给客人吃。还有一种是客人来后才将饺子下锅。这个例子显然不是十分恰当,但它的确能言简意赅地说明问题。线程池的概念就像是饺子的第一种做法,先在线程池中初始化一些线程,具体初始化多少取决于配置,等到客户端(消费者)调用时直接拿来使用。它和饺子的区别还是很大的,要是饺子下锅后没有客人来吃可惨了。

     

    Reference

     
     
     
     
     
     
     
     
  • 相关阅读:
    Unity3D ShaderLab 立方体图的反射遮罩
    Unity3D ShaderLab 简单的立方体图反射
    Unity3D ShaderLab 各向异性高光
    Unity3D ShaderLab 使用贴图对模型的高光进行遮罩
    Unity3D ShaderLab 使用BlinnPhong高光类型
    Unity3D ShaderLab 创建自定义高光类型
    Unity3D ShaderLab 基础的高光实现
    Unity3D ShaderLab法线贴图
    Unity3D ShaderLab压缩混合纹理贴图
    Java几种建立实例的方法
  • 原文地址:https://www.cnblogs.com/east7/p/11665450.html
Copyright © 2011-2022 走看看