1、饿汉模式
package com.j.single;
/**
* 饿汉模式
*
* @author admin
*
*/
public class MyObject {
private MyObject() {
}
private static MyObject obj = new MyObject();
public static MyObject get() {
return obj;
}
public static void main(String[] args) {
for (int i = 0; i < 100; i++) {
System.out.println(MyObject.get());
}
}
}
2、饿汉模式
package com.j.single;
public class MyObject2 {
private MyObject2() {
}
private static MyObject2 obj;
public static MyObject2 get() {
if (obj != null) {
} else {
try {
Thread.sleep(3000);
} catch (InterruptedException e) {
e.printStackTrace();
}
synchronized (MyObject2.class) {
if (obj == null) {
obj = new MyObject2();
}
/* 错误示范 */
/* obj = new MyObject2(); */
}
}
return obj;
}
public static void main(String[] args) {
for (int i = 0; i < 10; i++) {
new ThreadAAA().start();
}
}
}
class ThreadAAA extends Thread {
@Override
public void run() {
// TODO Auto-generated method stub
super.run();
System.out.println(MyObject2.get().hashCode());
}
}
3、静态块
package com.j.single;
public class MyObject3 {
private MyObject3() {
}
private static MyObject3 obj = null;
static {
obj = new MyObject3();
}
public static MyObject3 get() {
return obj;
}
}