[Become a Java-Masta๐จโ๐ซ 6์ฃผ์ฐจ] ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ, Enum
๐ฏ ๋ชฉํ
์๋ฐ์ ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ, Enum์ ๋ํด ํ์ตํ๊ธฐ.
๐ ํ์ตํ ๊ฒ
๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ
- Thread ํด๋์ค
- Runnable ์ธํฐํ์ด์ค
- ์ฐ๋ ๋ ์ํ
- ์ฐ๋ ๋ ์ฐ์ ์์
- Main ์ฐ๋ ๋
- ๋๊ธฐํ
- ๋ฐ๋๋ฝ
Enum
๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ
๋จผ์ Process ์ Thread์ ์ฐจ์ด์ ์ ์ดํดํ๊ณ ๋์ด๊ฐ์ผ ํ ํ์๊ฐ ์๋ค.
-
ํ๋ก์ธ์ค(Process): OS ๋ด์์ ์คํ์ค์ธ ํ๋ก๊ทธ๋จ -
์ฐ๋ ๋(Thread): ํ๋ก์ธ์ค ๋ด์์ ์ค์ ์์ ์ด ์คํ๋๋ ํ๋ฆ์ ๋จ์
๋ฐ๋ผ์ ํ๋ก์ธ์ค๋ ํ๋ ์ด์์ ์ฐ๋ ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ค.
์ผ๋ฐ์ ์ผ๋ก ํ ํ๋ก๊ทธ๋จ(Process)์ ํ๋์ ์ฐ๋ ๋๋ฅผ ๊ฐ์ง๊ณ ์์ง๋ง, ํ๋ก๊ทธ๋จ ํ๊ฒฝ์ ๋ฐ๋ผ ๋ ์ด์์ ์ค๋ ๋๋ฅผ ๋์์ ์คํํ ์ ์๋ค. ์ด๋ฌํ ์คํ ๋ฐฉ์์ ๋ฉํฐ์ฐ๋ ๋(multithread)๋ผ๊ณ ํ๋ค.
๊ทผ๋ฐ ์ ๋ฉํฐํ๋ก์ธ์ค ํ๋ก๊ทธ๋๋ฐ์ด ์๋๋ผ ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ์ ํ ๊น?
๋ฉํฐํ๋ก์ธ์ค์ ๋ฉํฐ์ฐ๋ ๋๋ ์์ชฝ ๋ชจ๋ ์ฌ๋ฌ ํ๋ฆ์ด ๋์์ ์งํ๋๋ค๋ ๊ณตํต์ ์ ๊ฐ์ง๊ณ ์๋ค.
ํ์ง๋ง ๋ฉํฐํ๋ก์ธ์ค์์ ๊ฐ ํ๋ก์ธ์ค๋ ๋ ๋ฆฝ์ ์ผ๋ก ์คํ๋๋ฉฐ ๊ฐ๊ฐ ๋ณ๊ฐ์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ์ฐจ์งํ๊ณ ์๋ ๊ฒ๊ณผ ๋ฌ๋ฆฌ ๋ฉํฐ์ฐ๋ ๋๋ ํ๋ก์ธ์ค ๋ด์ ๋ฉ๋ชจ๋ฆฌ๋ฅผ ๊ณต์ ํด ์ฌ์ฉํ ์ ์๋ค. ๋ํ ํ๋ก์ธ์ค ๊ฐ์ ์ ํ์๋ ๋ง์ ๋น์ฉ์ด ์๋ชจ๋๊ธฐ ๋๋ฌธ์ ์๋์ ๋น์ฉ ์ธก๋ฉด์์ ์ฐ๋ ๋๊ฐ ์ ๋ฆฌํ๊ธฐ ๋๋ฌธ์ด๋ค.
java์์๋ ์ฐ๋ ๋๋ฅผ 2๊ฐ์ง ๋ฐฉ์์ผ๋ก ๊ตฌํํ ์ ์๋ค.
Thread ํด๋์ค๋ฅผ ์์Runnable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํ
Thread ํด๋์ค
Thread ํด๋์ค๋ฅผ ์์๋ฐ์ ์ฐ๋ ๋๋ฅผ ๊ตฌํํ๋ฉด, Thread ํด๋์ค ๋ด์ run ๋ฉ์๋๋ฅผ ์ฌ์ ์(Override) ํ๋ฉด ๋๋ค.
public class ThreadByThread extends Thread {
@Override
public void run() {
System.out.println("Run Thread By Thread");
}
}
public class Main {
public static void main(String[] args) {
ThreadByThread thread =new ThreadByThread();
thread.start();
}
}
Thread ํด๋์ค๋ฅผ ์์๋ฐ์ ๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ start ๋ฉ์๋๋ฅผ ํธ์ถํจ์ผ๋ก์จ ์ฐ๋ ๋๋ฅผ ์์ฑํ ์ ์๋ค.
Runnable ์ธํฐํ์ด์ค
Runnable ์ธํฐํ์ด์ค๋ฅผ ๊ตฌํํ์ฌ ์ฐ๋ ๋๋ฅผ ๊ตฌํํ๋ฉด, run ๋ฉ์๋ ์์ ์ฐ๋ ๋๊ฐ ํ ์ฝ๋๋ฅผ ์์ฑํด์ฃผ๋ฉด ๋๋ค.
public class ThreadByRunnable implements Runnable {
@Override
public void run() {
System.out.println("Run Thread By Runnable");
}
}
public class Main {
public static void main(String[] args) {
Thread thread = new Thread(new ThreadByRunnable());
thread.start();
}
}
์ฌ๊ธฐ์ Runnable ๊ฐ์ฒด๋ Thread๊ฐ์ฒด๋ฅผ ์์ฑํ์ฌ Thread ์์ฑ์์ ํ๋ผ๋ฏธํฐ๋ก ๋๊ธฐ์ด Thread ํ์ ์ผ๋ก ์์ฑ ํ start ๋ฉ์๋๋ฅผ ํธ์ถํจ์ผ๋ก์จ ์ฐ๋ ๋๋ฅผ ์์ฑํ ์ ์๋ค.
์ฐ๋ ๋ ์ํ
์ฐ๋ ๋ ์ค์ผ์ค๋ง: ์ฐ๋ ๋์ ๊ฐ์๊ฐ ์ฝ์ด(CPU)์ ์๋ณด๋ค ๋ง์ ๊ฒฝ์ฐ, ์ฐ๋ ๋๋ฅผ ์ด๋ค ์์์ ์ํด concurrentํ๊ฒ ์คํํ ๊ฒ์ธ๊ฐ๋ฅผ ์ ํ๋ ์์

์คํ ์ํ: ์คํ ๋๊ธฐ ์ํ์ ์๋ ์ฐ๋ ๋ ์ค์์ ์ฐ๋ ๋ ์ค์ผ์ค๋ง์ผ๋ก ์ ํ๋ ์ฐ๋ ๋๊ฐ CPU๋ฅผ ์ ์ ํ๊ณ run()๋ฉ์๋๋ฅผ ์คํํ ์ํ
์ฐ๋ ๋ ์ํ๋ฅผ ํ์ธํ ์ ์๋๋ก ํด์ฃผ๋ getState() ๋ฉ์๋๋ ์ฐ๋ ๋ ์ํ์ ๋ฐ๋ฅธ Thread.State ์ด๊ฑฐ ์์๋ฅผ ๋ฆฌํดํ๋ค.
| ์ํ | ์ด๊ฑฐ ์์ | ์ค๋ช |
|---|---|---|
| ์์ฑ | NEW | ์ค๋ ๋ ๊ฐ์ฒด๊ฐ ์์ฑ๋ ์ํ. ์์ง start() ํธ์ถ ์ |
| ๋๊ธฐ | RUNNABLE | ์คํ๋ ์ค๋น(์ค์ผ์ค๋ฌ์ ์ํด ์ ํ ๋ฐ๊ธฐ ์ )๋ฅผ ๋ง์น ์ํ. start() ํธ์ถ ๋จ |
| ์ ์ง | WAITING | ๋ค๋ฅธ ์ค๋ ๋๋ก๋ถํฐ ์ค๋ ์ด๋ฒคํธ๋ฅผ ๋๊ธฐํ๋ ์ํ |
TIMED_WAITING | ์ฃผ์ด์ง ์๊ฐ ๋์ ๋๊ธฐํ๋ ์ํ | |
BLOCKED | ์ฌ์ฉํ๊ณ ์ ํ๋ ๊ฐ์ฒด์ lock์ด ํ๋ฆด ๋๊น์ง ๋๊ธฐํ๋ ์ํ | |
| ์ข ๋ฃ | TERNINATED | ์คํ์ด ๋ค ๋๋ ์ํ |
NEW๋ก ์ฐ๋ ๋ ๊ฐ์ฒด๋ฅผ ์์ฑํ๊ณ , start() ๋ฉ์๋๋ฅผ ํธ์ถํ๋ฉด ๊ณง๋ฐ๋ก ์ฐ๋ ๋๊ฐ ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง ์ฌ์ค์ ์ค๋น๊ฐ ์๋ฃ๋ ๋๊ธฐ ์ํ์ด๋ค.
์คํ ๋๊ธฐ ์ํ์ ์๋ ์ฐ๋ ๋ ์ค์์ ์ฐ๋ ๋ ์ค์ผ์ค๋ง์ผ๋ก ์ ํ๋ ์ฐ๋ ๋๋ง์ด ์คํ ์ํ๊ฐ ๋๊ณ , ์คํ ์ํ์ ์ฐ๋ ๋๋ run() ๋ฉ์๋๋ฅผ ๋ชจ๋ ์คํํ๊ธฐ ์ ์ ์ฐ๋ ๋ ์ค์ผ์ค๋ง์ ์ํด ๋ค์ ์คํ ๋๊ธฐ ์ํ๋ก ๋์๊ฐ ์ ์๋ค(interrupt).
๊ทธ๋ฆฌ๊ณ ์คํ ๋๊ธฐ ์ํ์ ์๋ ๋ค๋ฅธ ์ฐ๋ ๋๊ฐ ์ ํ(scheduler dispatch)๋๋ ๋ฐฉ์์ผ๋ก ์ฐ๋ ๋ ์ค์ผ์ค๋ง์ด ์ด๋ฃจ์ด ์ง๋ค.
์๋ ํ๋ ์ฐ๋ ๋์ ์ํ๋ฅผ ์กฐ์ํ ์ ์๋ ๋ฉ์๋์ด๋ค.
| ๋ฉ์๋ | ์ค๋ช |
|---|---|
static void yield() | ํ์ฌ ์ฐ๋ ๋๊ฐ ํ๋ก์ธ์์ ํ์ฌ ์ฌ์ฉ์ ์๋ณด(yield) ํ ์์ฌ๊ฐ ์๋ค๋ ์ค์ผ์ค๋ฌ์ ๋ํ ํํธ์ด๋ค. |
static void sleep(long millis) | ํ์ฌ ์คํ์ค์ธ ์ฐ๋ ๋๊ฐ ์ง์ ๋ ๋ฐ๋ฆฌ ์ด ๋์ ์ผ์์ ์ผ๋ก ์คํ ์ค์ง ๋๋๋ก ํ๋ค. ์ฆ, TIMED_WAITING ์ํ๋ก ๋ง๋ ๋ค. |
void join(long millis) | ์ด ์ฐ๋ ๋๊ฐ ์์ ์ด ์๋ฃ ๋ ๋๊น์ง ๊ธฐ๋ค๋ฆฐ๋ค. |
void interrupt() | ์ด ์ฐ๋ ๋์ interrupted ์ํ๋ฅผ true๋ก ๋ณ๊ฒฝํ๋ค. |
์ฐ๋ ๋ ์ฐ์ ์์
์ฐ๋ ๋์ ์ฐ์ ์์๋ฅผ ๋ถ์ฌํจ์ผ๋ก์จ ํด๋น ์ฐ๋ ๋๊ฐ ๋จผ์ ๋ ๋ ํ๋ฅ ์ ๋์ฌ์ค๋ค.
ํ์ง๋ง, ์ฐ์ ์์๊ฐ ๋๋ค๊ณ ํด์ ๋ฌด์กฐ๊ฑด ๋จผ์ ๋๋๋ ๊ฒ์ ์๋๋ค.
java์์ ์ฐ๋ ๋์ ์ฐ์ ์์๋ฅผ ์ค์ ํ๋ ๋ฐฉ๋ฒ์ setPriority(int weight) ๋ฉ์๋๋ฅผ ํตํด ์ค์ ํ ์ ์๋ค.
weight ํ๋ผ๋ฏธํฐ๋ ์ซ์๊ฐ ํด์๋ก ์ฐ์ ์์๊ฐ ๋์๊ฒ์ด๋ฉฐ, ์ค์ ๋ฒ์๋ 1๋ถํฐ 10๊น์ง ์ฐ์ ์์๋ฅผ ์ค์ ํ ์ ์๋ค.
๋ํดํธ weight๋ ์ค๊ฐ๊ฐ์ธ 5๊ฐ ์ค์ ๋๋ค.
Main ์ฐ๋ ๋
Main ์ฐ๋ ๋๋ ๋ชจ๋ ์๋ฐ ์ ํ๋ฆฌ์ผ์ด์ ์ ์์์ ์ด๋ค.
Main ์ฐ๋ ๋๋ก ํ๋ก๊ทธ๋จ์ด ์์๋์ด ์คํ์ ๋๊ณ , ๋ฉํฐ ์ฐ๋ ๋๋ ์ฑ๊ธ ์ฐ๋ ๋์ธ Main ์ฐ๋ ๋์์๋ถํฐ ํ์๋์ด ์์ฑ๋ ์ฐ๋ ๋๋ผ๊ณ ํ ์ ์๋ค.
์ฐธ๊ณ ๋ก, ๋ฉํฐ ์ฐ๋ ๋ ์ดํ๋ฆฌ์ผ์ด์ ์์๋ Main ์ค๋ ๋๊ฐ ์ข ๋ฃ๋๋๋ผ๋ ์์ ์ค๋ ๋๊ฐ ์ข ๋ฃ๋์ง ์์ผ๋ฉด ์ดํ๋ฆฌ์ผ์ด์ ์ด ์ข ๋ฃ๋์ง ์๋๋ค.
public static void main(String[] args) { // ๋ฉ์ธ ์ฐ๋ ๋
Thread thread = new Thread(new ThreadByRunnable()); // ๋ฉํฐ ์ฐ๋ ๋ ์์ฑ
thread.start();
}
๋๊ธฐํ
๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ์์ ์ฌ๋ฌ ์ฐ๋ ๋๊ฐ ํ ํ๋ก์ธ์ค๋ด ์์์ ๊ณต์ ํ๋ฏ๋ก ํ ์ฐ๋ ๋๊ฐ ์งํ์ค์ธ ์์ ์ ๋ค๋ฅธ ์ฐ๋ ๋ ์ชฝ์์ ์ฌ์ฉ, ๋ณ๊ฒฝํ๋ ์ผ์ด ๋ฐ์ํ ์ ์๋ค.
์ด๋ฌํ ๋ฌธ์ ์ ์ ํด๊ฒฐ ํ๊ธฐ์ํด ํ๋์ ์ฐ๋ ๋๋ง ์์ญ ๋ด์ ์ฝ๋๋ฅผ ์ํํ๋๋ก ํ๋ ์ฐ๋ ๋ ๋๊ธฐํ๋ฅผํ๋ค.
java์์ 2๊ฐ์ง ๋ฐฉ์์ผ๋ก ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ ๋๊ธฐํ ํ ์ ์๋ค.
synchronizedํค์๋ ์ฌ์ฉjava.lang.Objectํด๋์ค์wait(),notify(),notifyAll()๋ฉ์๋ ์ฌ์ฉ
1. synchronized ํค์๋ ์ฌ์ฉ
synchronized ํค์๋๋ก ์คํ ๋ธ๋ก์ด๋, ๋ฉ์๋๋ฅผ ์๊ณ ๊ตฌ์ญ์ผ๋ก ๋ง๋ค์ด ๋๊ธฐํ ์ํฌ ์ ์๋ค.
๋๊ธฐํ ๋ธ๋ก
synchronized(์ฐ๋ ๋ ๊ฐ์ฒด){
// ๋๊ธฐํ ์ํฌ ์ฝ๋
}
๋๊ธฐํ ๋ฉ์๋
public static synchronized void syncMethod(){
// ๋๊ธฐํ ์ํฌ ์ฝ๋
}
ํด๋น ๋๊ธฐํ ๋ธ๋ก์ด๋, ๋ฉ์๋๋ ํ๋์ ์ฐ๋ ๋๋ง์ด ์ง์ ๋ ์ ์๋ค.
java.lang.Object ํด๋์ค์ wait(), notify(), notifyAll() ๋ฉ์๋ ์ฌ์ฉ
์๋ ํ์ ๋ฉ์๋๋ค์ ์๊ณ ๊ตฌ์ญ์์๋ง ์ฌ์ฉ ๊ฐ๋ฅํ๋ค.
| ๋ฉ์๋ | ์ค๋ช |
|---|---|
wait() | ๋ค๋ฅธ ์ค๋ ๋๊ฐ notify()๋ก ๋ถ๋ฌ์ค ๋๊น์ง ๋๊ธฐํ๋ค. |
notify() | ๋ฌด์์๋ก ๋๊ธฐ ์ค์ธ ์ค๋ ๋๋ฅผ ๊นจ์ RUNNABLE ์ํ๋ก ๋ณ๊ฒฝ, 2๊ฐ ์ด์์ ์ค๋ ๋๊ฐ ๋๊ธฐ ์ค์ด๋ผ๋ ์ค์ง ํ ๊ฐ์ ์ค๋ ๋๋ง ๊นจ์ RUNNABLE ์ํ๋ก ๋ณ๊ฒฝํ๋ค. |
notifyAll() | ๋๊ธฐ ์ค์ธ ๋ชจ๋ ์ค๋ ๋๋ฅผ ๊นจ์ฐ๊ณ ๋ชจ๋ RUNNABLE ์ํ๋ก ๋ณ๊ฒฝํ๋ค. |
๋ฐ๋๋ฝ
๋ฐ๋๋ฝ์, ๋ ๊ฐ ์ด์์ ์ฐ๋ ๋๋ค์ด ๊ฐ์ ์์์ ์ ์ ํ ์ํ์์ ์๋ก ๋ค๋ฅธ ์ฐ๋ ๋์ ์์์ ์๊ตฌํ๋ฉฐ ๋ชจ๋ ๋ฌดํ์ ๋๊ธฐ์ค์ธ ์ํ๋ฅผ ๋งํ๋ค.
์ฆ, ์ฐ๋ ๋1์ด ์์1์ ์ ์ ํ์๊ณ , ์ฐ๋ ๋2๊ฐ ์์2๋ฅผ ์ ์ ํ ์ํ์์ ์ฐ๋ ๋1์ด ์์2๋ฅผ ์์ฒญํ๋๋ฐ ์ฐ๋ ๋2๋ ์์ 1์ ์์ฒญํ์ฌ ์๋ก ์์์ ์ ์ ํ ์ฑ ์์ฒญ๋ง ํ๋ฉฐ ์๋ณดํ์ง ์๊ณ ๋ฒํฐ๋ ์ํฉ์ด๋ค.
๊ทธ๋ ๊ธฐ ๋๋ฌธ์ yield()๋ฅผ ์ฌ์ฉํ์ฌ ์๋ณด๋ฅผ ํ๊ธฐ๋ ํ๋ค.
Enum
enum ์ด๋ ๊ด๋ จ์ด ์๋ "์์"์ ์งํฉ์ ์ ์ํ๋ ํ์ ์ผ๋ก ํด๋์ค์ ํน์ํ ํ์์ด๋ค.
์๋ฐ5๋ถํฐ enum ํ์ ์ด ๋์ ๋์๊ณ , ๋ณ์, ๋ฉ์๋, ์์ฑ์๋ฅผ ์ถ๊ฐํ์ฌ ์ฌ์ฉํ ์ ์๋ค.
enum ํ์ ์ ์ฌ๋ฌ ํน์ฑ๋ค์ด ์กด์ฌํ๋ค.
java.lang.Enumํด๋์ค(์ถ์ ํด๋์ค)๋ฅผ ์์ํ ์์ ํ ํด๋์ค์ด๋ฏ๋ก ํ๋์ ๋ฉ์๋๋ฅผ ๊ฐ์ง ์ ์์ผ๋ฉฐ, ๊ทธ๋ฌ๋ฏ๋ก ๋ค๋ฅธ ํด๋์ค๋ฅผ ์์๋ฐ์ ์ ์๋ค.public static finalํ์ ์ผ๋ก ๊ณต๊ฐ๋๋ฉฐ ์์์ ๋์ผํ๊ฒ ๋ช ์นญ์ ์ ๋ถ ๋๋ฌธ์๋ก ์ ์ํ๋ค.- ๊ณ ์ ๋ ์์๋ค์ ์งํฉ์ด๊ธฐ ๋๋ฌธ์ ๋ฐํ์์ด ์๋ ์ปดํ์ผํ์์ ๋ชจ๋ ๊ฐ์ ์๊ณ ์์ด์ผ ํ๋ฏ๋ก ์์ฑ์์ ์ ๊ทผ์ง์ ์๊ฐ
private๋ก ๋์ ์ผ๋ก ๊ฐ์ ๋ณ๊ฒฝํ์ฌ ์์ฑํ๋ฉด ์๋๋ค. - singleton ํจํด์ด ์ ์ฉ๋์ด ํ๋์ ์กด์ฌํ๋ ์์ ํ๋๋น ํ๋์ ์ธ์คํด์ค๊ฐ ๋๋ค.
- ์ฑ๊ธํค์ผ๋ก ์กด์ฌํ๋ฏ๋ก ๊ฐ์ฒด๋ฅผ
equals()๋ฉ์๋๊ฐ ์๋==๋ก ๋น๊ต๊ฐ ๊ฐ๋ฅํ๋ค.
enum ์ ์ํ๋ ๋ฐฉ๋ฒ
public enum CHICEKN {
[public static final] BBQ("BBQ์นํจ"), //CHICEKN.BBQ๋ก ์ ๊ทผ
[public static final] PURADAK("ํธ๋ค๋ฝ์นํจ"), // ;๊ฐ ์๋ ,
[public static final] GOOBNE("๊ตฝ๋ค์นํจ"); // ๋ด๋ถ์ ์ผ๋ก new๋ก ์์ฑํ ๊ฒ๊ณผ ๊ฐ๋ค.
private final String name; // ํ๋๋ฅผ ๊ฐ์ง ์ ์์
[private] CHICEKN(String name) { // private ์๋ต
this.name = name;
}
public String getName() { // ๋ฉ์๋๋ฅผ ๊ฐ์ง ์ ์์
return name;
}
}
enum์ด ์ ๊ณตํ๋ ๋ฉ์๋
enum ํ์ ์ java.lang.Enum ํด๋์ค๋ฅผ ์์ํ๋ฏ๋ก ํด๋น ํด๋์ค์ ๋ฉ์๋๋ฅผ ์ฌ์ฉํ ์ ์๋๋ฐ,
๋ํ์ ์ธ ๋ฉ์๋๋ก๋ values(), valueOf(), ordinal()์ด ์๋ค.
| ๋ฉ์๋ | ์ค๋ช |
|---|---|
values() | ๋ชจ๋ enum ์์๋ค์ enum ํ์ ๋ฐฐ์ด๋ก ๋ฐํ |
valueOf() | ํน์ ๋ฌธ์์ด์ด enum ํ์ ์ผ๋ก ์กด์ฌํ๋ฉด ๋ฐํ(์กด์ฌํ์ง ์์ผ๋ฉด exception ๋ฐ์) |
ordinal() | ํด๋น enum ์์์ index๋ฅผ ๋ฐํ |
EnumSet
์ด๋ฆ ๊ทธ๋๋ก Set์ ๊ธฐ๋ฐ์ผ๋ก ์ฝ๊ณ ๋น ๋ฅด๊ฒ enum ํ์ ์์๋ค์ ๋ค๋ฃฐ์ ์๋ ๊ธฐ๋ฅ์ ์ ๊ณตํ๋ค.
enum์ ์ฑ๊ธํด ํจํด์ ๋จ์ผ ๊ฐ์ฒด์์ ๋ณด์ฅ ํจ์ผ๋ก ํด์ฑ์์ ์ ํ์๋ก ํ์ง ์๊ธฐ ๋๋ฌธ์ EnumSet์ enum์ ์์ ๊ฐฏ์๊ฐ 64๊ฐ๋ฅผ ๋์ง ์๋๋ค๋ฉด, ๋ด๋ถ์ ์ผ๋ก long ๋ฐ์ดํฐํ์ 64๋นํธ ํ๋๋ฅผ ์ด์ฉํ์ฌ ์ข์ ์ฑ๋ฅ์ ๋ณด์ฌ์ค๋ค.
๋ํ์ ์ธ EnumSet์ ๋ฉ์๋๋ก๋ .allOf(enum.class), EnumSet.of(enum1, enum2...), EnumSet.complementOf(enum of EnumSet), EnumSet.range(enum1, enum4) ๊ฐ ์๋ค.
| ๋ฉ์๋ | ์ค๋ช |
|---|---|
.allOf(enum.class) | enum ํ์ ์ ๋ชจ๋ ์์๋ค์ ๊ฐ์ ธ์ค๊ธฐ |
EnumSet.of(enum1, enum2...) | ํน์ enum์์๋ค์ ๊ฐ์ ธ์ค๊ธฐ |
EnumSet.complementOf(enum of EnumSet) | ํน์ ํ enum์์๋ฅผ ์ ์ธํ๊ณ ๊ฐ์ ธ์ค๊ธฐ |
EnumSet.range(enum1, enum4) | ๋ฒ์๋ก ์์๋ค ๊ฐ์ ธ์ค๊ธฐ |
Author And Source
์ด ๋ฌธ์ ์ ๊ดํ์ฌ([Become a Java-Masta๐จโ๐ซ 6์ฃผ์ฐจ] ๋ฉํฐ์ฐ๋ ๋ ํ๋ก๊ทธ๋๋ฐ, Enum), ์ฐ๋ฆฌ๋ ์ด๊ณณ์์ ๋ ๋ง์ ์๋ฃ๋ฅผ ๋ฐ๊ฒฌํ๊ณ ๋งํฌ๋ฅผ ํด๋ฆญํ์ฌ ๋ณด์๋ค https://velog.io/@bae_mung/Become-a-Java-Masta-6์ฃผ์ฐจ-๋ฉํฐ์ฐ๋ ๋-ํ๋ก๊ทธ๋๋ฐ-Enum์ ์ ๊ท์: ์์์ ์ ๋ณด๊ฐ ์์์ URL์ ํฌํจ๋์ด ์์ผ๋ฉฐ ์ ์๊ถ์ ์์์ ์์ ์ ๋๋ค.
์ฐ์ํ ๊ฐ๋ฐ์ ์ฝํ
์ธ ๋ฐ๊ฒฌ์ ์ ๋
(Collection and Share based on the CC Protocol.)
์ข์ ์นํ์ด์ง ์ฆ๊ฒจ์ฐพ๊ธฐ
๊ฐ๋ฐ์ ์ฐ์ ์ฌ์ดํธ ์์ง
๊ฐ๋ฐ์๊ฐ ์์์ผ ํ ํ์ ์ฌ์ดํธ 100์ ์ถ์ฒ ์ฐ๋ฆฌ๋ ๋น์ ์ ์ํด 100๊ฐ์ ์์ฃผ ์ฌ์ฉํ๋ ๊ฐ๋ฐ์ ํ์ต ์ฌ์ดํธ๋ฅผ ์ ๋ฆฌํ์ต๋๋ค