์ฑ๊ธํค
- ํ๋ก๊ทธ๋จ ์ ์ฒด์์ ๋จ ํ๋์ ๊ฐ์ฒด๋ง ๋ง๋ค๋๋ก ๋ณด์ฅํ๋ ๋ฐฉ๋ฒ
์ฌ์ฉ๋ชฉ์
- ๋ฉ๋ชจ๋ฆฌ์ ํจ์จ์ฑ๊ณผ ๋ฐ์ดํฐ ๊ณต์ ์ ์ด์ ์ด ์์
๋จ์
- ๊ตฌํ์ด ๊น๋ค๋ก์
๋ฐ์ดํฐ์ ๋ฌด๊ฒฐ์ฑ์ด ๊นจ์ง ์ ์์(๋ฉํฐ์ค๋ ๋์์ ์ฌ์ฉ์ syncronized(๋๊ธฐํ) ํ์)
syncronize
- ์ฌ๋ฌ ๊ฐ์ ์ค๋ ๋๊ฐ ๊ฐ์ ๋์ ๋ค์ด๊ฐ ๋ ์ ๊ธ ์ฒ๋ฆฌํ์ฌ ํ๋์ฉ ์ฒ๋ฆฌํ๋๋ก ํ๋ ๊ฒ..(?)
๋จ๋ฐํ๋ฉด ์ฑ๋ฅ์ด ํ์ ํ ๋จ์ด์ง๊ธฐ ๋๋ฌธ์ ์ ์ ๋ฒ์์์ ๊ผญ ํ์ํ ๋๋ง ์ฐ๋ ๊ฒ์ด ์ข์.
โ ์ฑ๊ธํค ์ ์ธ (ํจํค์ง ๋์ผ)
public class Singleton {
String name;
int id;
private static Singleton singleton = new Singleton();
private Singleton() {
name = "test";
id = 20;
}
static Singleton getSingleton() {
return singleton;
}
}
private static Singleton singleton = new Singleton();
์ฐธ์กฐ๋ณ์(singleton)๊ฐ ํ๋๋ง(static) ๋ง๋ค์ด์ง๋ค.
์ธ๋ถ์์ ๊ฐ์ฒด ์์ฑ ๋ฐ ์ ๊ทผํ๋ฉด ์๋๊ธฐ ๋๋ฌธ์ private static์ผ๋ก ...
static Singleton getSingleton() {
return singleton;
}
getSingleton() ๋ฉ์๋ ํธ์ถ ์ ๋ฐํ ๊ฐ์ผ๋ก ์ด๋ฏธ ๋ง๋ค์ด์ ธ ์๋ ์ฑ๊ธํค ๊ฐ์ฒด์ ์ฐธ์กฐ ๋ณ์๋ฅผ ๋ฐํ (singleton ์ฃผ์๊ฐ)
๋ฐํํ์ :Singleton
โ Singleton ๊ฐ์ฒด๋ฅผ ๋ ๊ฐ ์์ฑ ํ ๊ฐ์ ๊ฐ์ ์ฐธ์กฐํ๋์ง ํ์ธํด๋ณด๋ ์์
public class ReferenceTest1 {
Singleton singleton = Singleton.getSingleton();
void setInfo(String name, int id) {
singleton.name = name;
singleton.id = id;
}
void viewInfo() {
System.out.println("์ด๋ฆ : " + Signleton.name);
System.out.println("id : " + Singleton.id);
}
}
public class ReferenceTest2 {
Singleton singleton = Singleton.getSingleton();
void setInfo(String name, int id) {
singleton.name = name;
singleton.id = id;
}
void viewInfo() {
System.out.println("์ด๋ฆ : " + Singleton.name);
System.out.println("id : " + Singleton.id);
}
}
public class Singleton {
public static void main(String[] args) {
ReferenceTest1 ref1 = new ReferenceTest1();
ReferenceTest2 ref2 = new ReferenceTest2();
ref1.setInfo("ํ๊ธธ๋", 200);
ref2.viewInfo();
์ฐธ์กฐํ๋ ๊ฐ์ด ๋์ผํ ๊ฒ์ ํ์ธํ ์ ์๋ค.
ํ์ฌ ๊ฐ์ ์ค๋ ๋๋ผ ๊ฐ์ด ์๊นจ์ง์ง๋ง,
๋ฉํฐ ์ค๋ ๋๋ฉด ๊ฐ ๊นจ์ง ์ ์๊ธฐ ๋๋ฌธ์ syncronized ํด์ค์ผ ํจ!!
'๐๏ธ Backend > Java' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
์๋ฐ(Java) - ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (12) ์ถ์ ํด๋์ค (1) | 2023.01.19 |
---|---|
์๋ฐ(Java) - ์์ด์ปจ ๋ง๋ค๊ธฐ(๊ฐ์ฒด ์งํฅ ์์ ) (1) | 2023.01.19 |
์๋ฐ(Java) - ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (10) ์ ์ ๋ฉ์๋ (0) | 2023.01.16 |
์๋ฐ(Java) - ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (9) ์ ๊ทผ ์ ํ์ (1) | 2023.01.16 |
์๋ฐ(Java) - ๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ (8) super, super() (0) | 2023.01.16 |