Java中对象池设计模式的真实例子

时间:2018-05-04 11:28:17

标签: java design-patterns

我已使用对象池设计模式为数据库连接实现了JDBCConnectionPooling。我只想知道对象池设计模式的真实世界示例。任何人都可以了解真实世界的示例,或者从对象池设计模式的任何Java库中了解?

2 个答案:

答案 0 :(得分:0)

看看java.lang.String它使用字符串缓存,如果内联有类似

的内容
String foo = "foobar";
String bar = "foobar";

然后它会被翻译成:

class StringPool {
   public static String static_foo = "foobar";
}

String foo = StringPool.foo;
String bar = StringPool.foo;

注意,这是java使用的字符串池的一个非常简化的示例。

如需更多阅读,建议您阅读What is the Java string pool and how is "s" different from new String("s")?

答案 1 :(得分:0)

Integer类按照Integer.valueOf

中的说明缓存值
  

public static Integer valueOf(int i)

     

返回表示指定int值的Integer实例。如果不需要新的Integer实例,通常应优先使用此方法,而不是构造函数Integer(int),因为此方法可能通过缓存频繁请求的值来显着提高空间和时间性能。 此方法将始终缓存-128到127(包括-128到127)范围内的值,并可以缓存此范围之外的其他值。

-128到127的范围实际上不是一个池,因为这将是一组静态值,但如果需要,它也可以设计为缓存其他值。请注意,我从未注意到定义范围之外的行为。所以:

Integer.valueOf(5) == Integer.valueOf(5) //true
Integer.valueOf(1234) == Integer.valueOf(1234) //false even if it could be true based on the javadoc