实现一个单例模式
public class KafkaService {
private static volatile KafkaService instance;
private KafkaService() {}
public static KafkaService getInstance() {
if (instance == null) {
synchronized (KafkaService.class) {
if (instance == null) {
instance = new KafkaService();
}
}
}
return instance;
}
instance使用volatile关键字:
作用是保证线程可见性,即当前线程更新了volatile值后,其他线程可以马上看到这个值。通过清除其他线程缓存在cache中该变量的旧值来实现。
还有一个作用是禁止对改操作做重排。
网友评论