【发布时间】:2011-09-24 08:40:12
【问题描述】:
在 Java 中创建单例的最佳方法是什么? 数据库连接应该是单例(作为单例,它是自动线程安全的)吗?因为理论上数据库不能被多个用户同时访问。
【问题讨论】:
-
谁告诉你如果某个东西是单例的,它会自动成为线程安全的?此外,数据库通常由许多用户同时访问。
-
@Reverend Gonzo 有没有线程安全的单身人士?
-
单例只是一个对象,它只创建一个实例。它与对象的线程安全无关。如果该对象的内部不是线程安全的,则将其转换为单例不会使其成为线程安全的。 Connection 对象不是线程安全的,因为您不能从多个线程同时使用它。通过使其成为单例,如果您尝试从多个线程访问该连接,则很容易出现严重问题。 (您应该使用的是连接池(通过库或 ThreadLocal)以使每个线程有一个连接。
标签: java design-patterns singleton