Tag: singleton

确保spring托管bean的单个实例

我创建了一个spring方面来处理Retry机制。 我还创建了一个重试注释。 以下是重试注释的代码和处理此注释的方面。 @Retention(RetentionPolicy.RUNTIME) @Target(ElementType.METHOD) public @interface Retry { /** * List of exceptions for which we need to retry method invocation. * * @return Array of classes. */ Class[] exceptions(); /** * Number of retries. Default is 3. * * @return Number of retires. */ int retries() default 3; /** * Back of period […]

Singleton实现中的Initialize-On-Demand习语与简单的静态初始化程序

使用静态初始化实现线程安全单例时,Initialize-On-Demand习惯用法是否真的必要,或者实例的简单静态声明是否足够? 将实例简单声明为静态字段: class Singleton { private static Singleton instance=new Singleton(); private Singleton () {..} public static Singleton getInstance() { return instance; } } VS class Singleton { static class SingletonHolder { static final Singleton INSTANCE = new Singleton(); } private Singleton () {..} public static Singleton getInstance() { return SingletonHolder.INSTANCE; } } 我问这个是因为Brian Goetz在本文中推荐了第一种方法: http://www.ibm.com/developerworks/java/library/j-dcl/index.html […]

单身不适合获得JDBC连接吗? 连接池的任何良好实现?

我使用单例模式为我的独立应用程序获取jdbc连接。 代码如下。 public static synchronized MysqlConnect getDbCon() { if ( db == null ) { db = new MysqlConnect(); } return db; } 但是我在很多讨论中都看到单身不利于连接。 这是真的吗? 并建议使用连接池。 任何人都可以给我一个很好的连接池实现,而不是上面的代码?

Singleton with Enum vs Singleton with double-checked locking

我想知道在multithreading环境中哪一个更好。 我理解Singleton作为Enum类型在加载类时创建一个实例。 除此之外我没有看到任何其他重要的东西。 有什么优点和缺点吗? Singleton as Enum类型: public enum Singleton { INSTANCE; public void doSomething(){ … } } Singleton double-checked locking : public class Singleton{ private volatile static Singleton instance; private Singleton(){} public static Singleton getInstance(){ if(instance == null){ synchronized(Singleton.class){ if(instance == null){ instance = new Singleton(); } } } return instance; } }

Java渴望单例创建线程安全吗?

我喜欢java中热切单身的简单性,大多数关于它的文章称它的创建线程是安全的。 class Singleton { public static final Singleton instance = new Singleton (); private Singleton (){}; public static Singleton getInstance(){ return instance; } } 但是我听到一些声称它的创建可能毕竟不是线程安全的。 例如,一个消息来源声称如果使用多于1个类加载器或App域则不安全。 由JVM保证的Eager Singleton的创建是否是线程安全的,例如,2个线程不会意外地同时创建单例? 编辑:对象创建的线程安全性是否需要关键字final? 如果该字段不是最终的,它不是线程吗?

java如何确保每个JVM只有一个枚举实例

Java如何在内部确保每个JVM只存在一个ENUM实例? 它是在应用程序启动时创建的,当多个线程访问它时,它会返回启动时创建的对象吗? 或者它是否实现了类似于单例模式的某种双重同步,这样即使多个线程访问它,也只会创建一个istance?

初始化按需持有者成语线程安全,没有最终修饰符

我有一种预感,即使用持有者惯用语而不将持有者字段声明为final是不是线程安全的(由于Java中的不变性方式)。 有人可以证实这一点(希望有一些消息来源)吗? public class Something { private long answer = 1; private Something() { answer += 10; answer += 10; } public int getAnswer() { return answer; } private static class LazyHolder { // notice no final private static Something INSTANCE = new Something(); } public static Something getInstance() { return LazyHolder.INSTANCE; } } 编辑:我绝对想要源语句,而不仅仅是“它有效”的断言 […]

差异:@SessionScoped vs @Stateful和@ApplicationScoped vs @Singleton

我想知道, 两者之间的主要区别是什么: javax.enterprise.context.SessionScoped和javax.ejb.Stateful javax.enterprise.context.ApplicationScoped和javax.ejb.Singleton 我知道@SessionScoped和@Stateful允许为每个客户端创建一个新实例。 我也知道,对于@ApplicationScoped和@Singleton / @Stateless,它们在客户端之间共享。 但是,我什么时候应该考虑选择一个EJB或另一个更好?

何时使用Spring原型范围?

我想知道我什么时候应该在Spring中使用prototype范围? 我已经理解,如果请求bean, singleton将返回相同的对象实例。 那我们为什么要考虑prototype ? 通过示例进行解释将有助于理解对它的需求。

Guice – 如何通过多个注入器/模块共享同一个Singleton实例

在guice中,@ Singleton范围不涉及Singleton模式。 根据“Dhanji”的“dependency injection”一书: 非常简单,单例的上下文就是注入器本身。 单身的寿命与注射器的寿命有关(如图5.8所示)。 因此,每个注射器只创建一个单例实例。 重要的是要强调最后一点,因为多个喷射器可能存在于同一应用中。 在这种情况下,每个注入器将保存单例范围对象的不同实例。 是否可以通过多个模块和多个喷射器共享同一个Singleton实例?