相关疑难解决方法(0)

线程安全单例类

我写了一个下面的Singleton类.我不确定这是否是线程安全的单例类?

public class CassandraAstyanaxConnection {

    private static CassandraAstyanaxConnection _instance;
    private AstyanaxContext<Keyspace> context;
    private Keyspace keyspace;
    private ColumnFamily<String, String> emp_cf;



    public static synchronized CassandraAstyanaxConnection getInstance() {
        if (_instance == null) {
            _instance = new CassandraAstyanaxConnection();
        }
        return _instance;
    }

    /**
     * Creating Cassandra connection using Astyanax client
     *
     */
    private CassandraAstyanaxConnection() {

        context = new AstyanaxContext.Builder()
        .forCluster(ModelConstants.CLUSTER)
        .forKeyspace(ModelConstants.KEYSPACE)
        .withAstyanaxConfiguration(new AstyanaxConfigurationImpl()      
            .setDiscoveryType(NodeDiscoveryType.RING_DESCRIBE)
        )
        .withConnectionPoolConfiguration(new ConnectionPoolConfigurationImpl("MyConnectionPool")
            .setPort(9160)
            .setMaxConnsPerHost(1)
            .setSeeds("127.0.0.1:9160")
        )
        .withAstyanaxConfiguration(new AstyanaxConfigurationImpl()      
            .setCqlVersion("3.0.0")
            .setTargetCassandraVersion("1.2"))
        .withConnectionPoolMonitor(new CountingConnectionPoolMonitor())
        .buildKeyspace(ThriftFamilyFactory.getInstance());

        context.start();
        keyspace = context.getEntity();

        emp_cf = …
Run Code Online (Sandbox Code Playgroud)

java singleton multithreading

58
推荐指数
2
解决办法
6万
查看次数

如何多次实例化Singleton?

我的代码中需要一个单例.我用Java实现它,它运行良好.我这样做的原因是为了确保在多个环境中,这个类只有一个实例.

但现在我想用Unit测试在本地测试我的Singleton对象.出于这个原因,我需要模拟这个Singleton的另一个实例(来自另一个设备的对象).那么有可能第二次实例化Singleton用于测试目的还是我必须嘲笑它​​?

我不确定,但我认为可以使用不同的类加载器?

java singleton

7
推荐指数
4
解决办法
8473
查看次数

标签 统计

java ×2

singleton ×2

multithreading ×1