package suanfa;
import java.util.concurrent.locks.ReentrantLock;
public class MySingleton {
static class S1 {
private static S1 instance;
private S1() {
}
public static S1 getInstance() {
if (instance == null) {
instance = new S1();
}
return instance;
}
}
static class S2 {
private static S2 instance;
public S2() {
}
public static synchronized S2 getInstance() {
if (instance == null) {
instance = new S2();
}
return instance;
}
}
static class S3 {
private static S3 instance;
private static byte[] lock = new byte[0];
private S3() {
}
public static S3 getInstance() {
if (instance == null) {
synchronized (lock) {
if (instance == null) {
instance = new S3();
}
}
}
return instance;
}
}
static class S4 {
private static S4 instance;
private static ReentrantLock lock = new ReentrantLock();
private S4() {
}
public static S4 getInstance() {
if (instance == null) {
lock.lock();
if (instance==null) {
instance = new S4();
}
lock.unlock();
}
return instance;
}
}
}
Singleton,了解一下
最新推荐文章于 2021-06-23 16:50:32 发布
本文介绍了一种使用四种不同同步机制实现单例模式的方法。通过静态内部类的方式,在Java中创建线程安全且懒加载的单例对象。这些方法包括基本的同步块、显式锁、synchronized关键字以及利用ReentrantLock。
1788

被折叠的 条评论
为什么被折叠?



