Существует класс RedisLogger.java, который имел дело с регистратором с помощью redis.В RedisLogger.java я объявил статическое поле JedisPool jedisPool
, используя этот код:
private static JedisPool jedisPool;
Причина JedisPool является поточно-ориентированным вызовом, я хочу создать экземпляр jedisPool
только один раз в моем приложении с помощьюследующий код:
public static JedisPool getJedisPool() {
if(jedisPool == null) {
synchronized (JedisPool.class) {
if(jedisPool == null) {
jedisPool = new JedisPool();
}
}
}
return jedisPool;
}
Я использовал этот код для проверки.
ExecutorService executor = Executors.newCachedThreadPool();
for(int i = 0; i < 1000; i++) {
executor.execute(()->{
System.out.println(RedisLogger.getJedisPool());
});
}
Кажется, он хорошо работает на выходе:
redis.clients.jedis.JedisPool@3d11fc5d
redis.clients.jedis.JedisPool@3d11fc5d
redis.clients.jedis.JedisPool@3d11fc5d
redis.clients.jedis.JedisPool@3d11fc5d
redis.clients.jedis.JedisPool@3d11fc5d
redis.clients.jedis.JedisPool@3d11fc5d
redis.clients.jedis.JedisPool@3d11fc5d
redis.clients.jedis.JedisPool@3d11fc5d
redis.clients.jedis.JedisPool@3d11fc5d
redis.clients.jedis.JedisPool@3d11fc5d
redis.clients.jedis.JedisPool@3d11fc5d
redis.clients.jedis.JedisPool@3d11fc5d
redis.clients.jedis.JedisPool@3d11fc5d
....
Но может ли он действительно достичьмои ожидания?Потому что в моем приложении есть много таких мест.например.
private static Cluster getCluster() {
if(cluster == null) {
synchronized (Cluster.class) {
if(cluster == null) {
Builder builder = Cluster.builder();
for (int i = 0; i < MSConfig.SRCDOC_CASSANDRA_ADDRS().length; i++) {
builder.addContactPoint(MSConfig.SRCDOC_CASSANDRA_ADDRS()[i])
.withPort(MSConfig.SRCDOC_CASSANDRA_PORT()[i]);
}
cluster = builder.withCredentials(MSConfig.SRCDOC_CASSANDRA_USERNMAE(), MSConfig.SRCDOC_CASSANDRA_PASSWORD())
.withProtocolVersion(ProtocolVersion.V4)
.withPoolingOptions(getPoolingOptions())
.withSocketOptions(getSocketOptions())
.withRetryPolicy(getRetryPolicy())
.withQueryOptions(getQueryOptions())
.build();
}
}
}
return cluster;
}
Спасибо !!!