자바 싱글톤, 쓰레드 예제
public class Singleton {
private static Singleton singleton = new Singleton();
private Singleton() {
System.out.println("Sington Class의 인스턴스 생성!");
}
public static Singleton getInstance() {
return singleton;
}
}
private static Singleton singleton = new Singleton();
private Singleton() {
System.out.println("Sington Class의 인스턴스 생성!");
}
public static Singleton getInstance() {
return singleton;
}
}
public class Main extends Thread {
public static void main(String[] args) {
System.out.println("Start.");
Singleton obj1 = Singleton.getInstance();
Singleton obj2 = Singleton.getInstance();
if (obj1 == obj2){
System.out.println("obj1 == obj2");
}
else {
System.out.println("obj1 != obj2");
}
}
}
public static void main(String[] args) {
System.out.println("Start.");
Singleton obj1 = Singleton.getInstance();
Singleton obj2 = Singleton.getInstance();
if (obj1 == obj2){
System.out.println("obj1 == obj2");
}
else {
System.out.println("obj1 != obj2");
}
}
}
=======================================
public class Singleton {
private static Singleton singleton = null;
private Singleton() {
System.out.println("인스턴스 생성...");
slowdown();
}
public static Singleton getInstance() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
private void slowdown() {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
}
}
private static Singleton singleton = null;
private Singleton() {
System.out.println("인스턴스 생성...");
slowdown();
}
public static Singleton getInstance() {
if (singleton == null) {
singleton = new Singleton();
}
return singleton;
}
private void slowdown() {
try {
Thread.sleep(10);
} catch (InterruptedException e) {
}
}
}
public class Main extends Thread {
public static void main(String[] args) {
System.out.println("Start.");
new Main("A").start();
new Main("B").start();
new Main("C").start();
System.out.println("End.");
}
public void run() {
Singleton obj = Singleton.getInstance();
System.out.println(getName() + ": obj = " + obj);
}
public Main(String name) {
super(name);
}
}
public static void main(String[] args) {
System.out.println("Start.");
new Main("A").start();
new Main("B").start();
new Main("C").start();
System.out.println("End.");
}
public void run() {
Singleton obj = Singleton.getInstance();
System.out.println(getName() + ": obj = " + obj);
}
public Main(String name) {
super(name);
}
}
댓글 없음:
댓글 쓰기