๋ฉํฐ ํ๋ก์ธ์ค๊ฐ ์ ํ๋ฆฌ์ผ์ด์ ๋จ์์ ๋ฉํฐ ํ์คํน์ด๋ผ๋ฉด ๋ฉํฐ ์ค๋ ๋๋ ์ ํ๋ฆฌ์ผ์ด์ ๋ด๋ถ์์์ ๋ฉํฐ ํ์คํน์ด๋ผ๊ณ ๋ณผ ์ ์๋ค.
๋ฉํฐ ์ค๋ ๋๋ ๋ค์ํ ๊ณณ์์ ์ฌ์ฉ๋๋ค.
1. ๋์ฉ๋ ๋ฐ์ดํฐ์ ์ฒ๋ฆฌ ์๊ฐ์ ์ค์ด๊ธฐ ์ํด ๋ฐ์ดํฐ๋ฅผ ๋ถํ ํด์ ๋ณ๋ ฌ๋ก ์ฒ๋ฆฌํ๋ ๊ณณ์์ ์ฌ์ฉ
2. UI๋ฅผ ๊ฐ์ง๊ณ ์๋ ์ ํ๋ฆฌ์ผ์ด์ ์์ ๋คํธ์ํฌ ํต์ ์ ํ๊ธฐ ์ํด ์ฌ์ฉ
3. ๋ค์ ํด๋ผ์ด์ธํธ์ ์์ฒญ์ ์ฒ๋ฆฌํ๋ ์๋ฒ๋ฅผ ๊ฐ๋ฐํ ๋
- ๋ฉ์ธ ์ค๋ ๋
๋ฉ์ธ ์ค๋ ๋๊ฐ ์์ ์ค๋ ๋๋ณด๋ค ๋จผ์ ์ข ๋ฃ๋๋๋ผ๋ ์์ ์ค๋ ๋๊ฐ ๊ณ์ ์คํ ์ค์ด๋ฉด ํ๋ก์ธ์ค๋ ์ข ๋ฃ๋์ง ์๋๋ค.
- ์์ ์ค๋ ๋
๋ช ๊ฐ์ ์์ ์ ๋ณ๋ ฌ๋ก ์คํํ ์ง ๊ฒฐ์ ํ๊ณ ๊ฐ ์์ ๋ณ๋ก ์ค๋ ๋๋ฅผ ์์ฑํ๋ค.
(์์ 1) (์์ 2)
(ํ๋ก๊ทธ๋จ์์ ๋ณ๋ ฌ๋ก ์คํํ ์์ ์ ๊ฒฐ์ ) -> ๋ฉ์ธ์ค๋ ๋ ์ค๋ ๋1 ์ค๋ ๋2
Threadํด๋์ค๋ฅผ ์ง์ ๊ฐ์ฒดํํด์ ์์ฑํด๋ ๋์ง๋ง, ์์ํด์ ํ์ ํด๋์ค๋ฅผ ๋ง๋ค์ด ์์ฑํ ์๋ ์๋ค.
์ด์ ์ฌ์ฉํ๋ ๋ฐฉ๋ฒ์ ์์๋ด ์๋ค!
1. Thread ํด๋์ค๋ก๋ถํฐ ์ง์ ์์ฑํ๋ ๋ฐฉ๋ฒ
Thread thread = new Thread(Runnable target);
์์ ๊ฐ์ด Runnable์ ๋งค๊ฐ๊ฐ์ผ๋ก ๊ฐ๋ ์์ฑ์๋ฅผ ํธ์ถํฉ๋๋ค.
Runnable์ ์์ ์ค๋ ๋๊ฐ ์คํํ ์ ์๋ ์ฝ๋๋ฅผ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด์ ๋๋ค. ์ธํฐํ์ด์ค ํ์ ์ด๊ธฐ ๋๋ฌธ์ ์๋์ ๊ฐ์ด ๊ตฌํ ๊ฐ์ฒด๋ฅผ ๋ง๋ค์ด ๋์ ํด์ผ ํฉ๋๋ค.
class Task implemets Runnable{
public void run(){
์ค๋ ๋๊ฐ ์คํํ ์ฝ๋
}
}
run() ํ๋๊ฐ ์ ์ ๋์ด ์๋๋ฐ. ์ด๊ฒ์ ์ฌ์ ์ํ์ฌ ์คํํ ์ฝ๋๋ฅผ ์์ฑํ๋ฉด ๋ฉ๋๋ค.
ํ์ง๋ง ์์ ๋ด์ฉ์ ๊ฐ์ง๊ณ ์๋ ๊ฐ์ฒด์ด์ง ์ค์ฒด ์ค๋ ๋๋ ์๋๋๋ค. Runnable ๊ฐ์ฒด๋ฅผ ์์ฑ ํ
Thread thread = new Thread(์ฌ๊ธฐ์)
์์ ๊ฐ์ด Thread์์ฑ์๋ก ํธ์ถํด์ผ๋ง ๋น๋ก์ ์์ ์ค๋ ๋๊ฐ ์์ฑ๋ฉ๋๋ค. ์๋์ ๊ฐ์ด ์ต๋ช ๊ตฌํ ๊ฐ์ฒด๋ฅผ ์ฌ์ฉํด๋ ๋ฌด๊ดํฉ๋๋ค.
Thread thread = new Thread(new Runnable(){
public void run(){
์ค๋ ๋๊ฐ ์คํํ ์ฝ๋
}
});
Runnable ์ฒ๋ผ ํ๋์ ๋ฉ์๋๋ฅผ ๊ฐ๊ณ ์๋ ์ธํฐํ์ด์ค๋ฅผ ํจ์์ ์ธํฐํ์ด์ค๋ผ๊ณ ํ๋๋ฐ. ์ด๋ฌํ ์ธํฐํ์ด์ค๋ ๋๋ค์์ ๋งค๊ฐ๊ฐ์ผ๋ก ์ฌ์ฉํ ์ ์์ต๋๋ค. (Java 8 ์ด์)
Thread thread = new Thread(()->{
์ค๋ ๋๊ฐ ์คํํ ์ฝ๋
} );
thread.start()
๋ฉ์ธ์ค๋ ๋ -> ์ค๋ ๋ ๊ฐ์ฒด ์์ฑ -> start() ๋ฉ์๋ ํธ์ถ -> ์์ ์ค๋ ๋ ์คํ / ๋ฉ์ธ ์ค๋ ๋ ์คํ
2. Thread ํ์ ํด๋์ค๋ก๋ถํฐ ์์ฑ
Runnable๋ก ๋ง๋ค์ง ์๊ณ ์ง์ Thread์ ํ์ ํด๋์ค๋ก ์์ ์ค๋๋๋ฅผ ์ ์ํ ์ ์๋ค.
์๋์ ๊ฐ์ด Thread์ run ๋ฉ์๋๋ฅผ ์ฌ์ ์ํ๋ฉด ๋๋ค.
public class Work extends Thread{
@Override
public void run(){
// ์ค๋ ๋๊ฐ ์คํํ ์ฝ๋
}
}
Thread thead = new Work();
์๋์ ๊ฐ์ด ์ต๋ช ์์ ๊ฐ์ฒด๋ก ์ฝ๋๋ฅผ ์ ์ฝํ ์ ์๋ค.
Thread thread = new Thread(){
@Override
public void run() {
}
};
์ค๋ ๋์ ์ด๋ฆ
ํ์์ ์ธ ์ญํ ์ ํ๊ธฐ ๋ณด๋ค๋ ๋๋ฒ๊น ํ ๋ ์ด๋ค ์ค๋ ๋๊ฐ ์ด๋ค ์์ ์ ํ๋์ง ํ์ธ ํ ๋ชฉ์ ์ผ๋ก ์ฌ์ฉ๋๋ค.
๋ฉ์ธ ์ค๋ ๋๋ "main" ์ด๋ผ๋ ์ด๋ฆ์ ๊ฐ์ง๊ณ ์๊ณ , ์ง์ ์์ํ ์ค๋ ๋๋ ์๋์ผ๋ก "Thread-n" ์ด๋ผ๋ ์ด๋ฆ์ผ๋ก ์ค์ ๋๋ค.
๋ณ๊ฒฝํ๊ณ ์ถ์ ๋๋
thread.setName("์ค๋ ๋ ์ด๋ฆ") ์ ์ฌ์ฉํ๋ฉด ๋๋ค. ๋ฐ๋๋ก ์ค๋ ๋์ ์ด๋ฆ์ ์๊ณ ์ถ์ ๋๋
thread.getName() ์ ์ฌ์ฉํ๋ฉด ๋๋ค.
* ๋ง์ฝ Thread ๊ฐ์ฒด๋ฅผ ์ฐธ์กฐํ๊ณ ์์ง ์๋ค๋ฉด Thread.currentThread() ๋ฅผ ํตํด ์ด๋ฆ์ ์์๋ผ ์ ์๋ค.
public static void main(String[] arg){
// Thraed ์ฐธ์กฐ ํ๊ณ ์์ง ์์
Thread mainThread = Thread.currnetThread();
mainThread.getName();
// Thraed ์ฐธ์กฐ ํ๊ณ ์์
ThraedA thraedA = new Thraed(){
@Override
public void run(){
setName("TheadA");
}
}
threadA.getName();
ThreadA.start();
}
์ค๋ ๋ ์ฐ์ ์์
๋ฉํฐ ์ค๋ ๋๋ ๋์์ฑ or ๋ณ๋ ฌ์ฑ์ผ๋ก ์คํ๋๋ค.
๋์์ฑ - ๋ฉํฐ ์์ ์ ์ํด ํ๋์ ์ฝ์ด์์ ๋ฉํฐ ์ค๋ ๋๊ฐ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์คํํ๋ค.
๋ณ๋ ฌ์ฑ - ๋ฉํฐ ์์ ์ ์ํด ๋ฉํฐ ์ฝ์ด์์ ๊ฐ๋ณ ์ค๋ ๋๋ฅผ ๋์์ ์คํํ๋ค.
์ฑ๊ธ ์ฝ์ด CPU๋ฅผ ์ด์ฉํ ๋ฉํฐ ์ค๋ ๋๋ ๋ณ๋ ฌ์ ์ผ๋ก ์คํ๋๋ ๊ฒ์ฒ๋ผ ๋ณด์ด์ง๋ง, ์ฌ์ค์ ๋ฒ๊ฐ์๊ฐ๋ฉฐ ์คํํ๋ ๋์์ฑ ์์ ์ด๋ค.
์๋ ๋น ๋ฅด๋ค๋ณด๋ ๋ณ๋ ฌ์ ์ผ๋ก ๋ณด์ผ ๋ฟ!
๊ทธ๋ฌ๋ฏ๋ก ์ด๋ค ์์์ ์ํด ๋์์ฑ์ผ๋ก ์ํํ ๊ฒ์ธ๊ฐ๋ฅผ ๊ฒฐ์ ํด์ผ ํ๋๋ฐ, ์ด๊ฒ์ ์ค๋ ๋ ์ค์ผ์ค๋ง์ด๋ผ๊ณ ํ๋ค.
์ค๋ ๋ ์ค์ผ์ค๋ง์ ์ฐ์ ์์ / ์ํ ํ ๋น ๋ฐฉ์์ ์ฌ์ฉํ๋ค.
์ฐ์ ์์ - ์ฐ์ ์์๊ฐ ๋์ ์ค๋ ๋๊ฐ ์คํ ์ํ๋ฅผ ๋ ๋ง์ด ๊ฐ์ง๋๋ก ํจ (๊ฐ๋ฐ์๊ฐ ์ฝ๋๋ก ์ ์ด ๊ฐ๋ฅ) 1~10 *1์ด ๋ฎ์์
์ํ ํ ๋น - ์๊ฐ ํ ๋น๋์ ์ ํด์ ํ๋์ ์ค๋ ๋๋ฅผ ์ ํด์ง ์๊ฐ๋งํผ ์คํํ๊ณ ๋ค์ ๋ค๋ฅธ ์ค๋ ๋๋ฅผ ์คํ ํจ (๊ฐ์ ๊ธฐ๊ณ์ ์ํด์ ์ ํด์ง ์ฝ๋๋ก ์ ์ด ๋ถ๊ฐ๋ฅ)
์ฌ์ฉ๋ฒ
1. thread.setPriority(1);
2. thread.setPriority(Thread.MIN_PRIORITY); -> Thread ํด๋์ค์ ์์๋ฅผ ์ฌ์ฉํ๋ค.
'๐ WEB > JAVA' ์นดํ ๊ณ ๋ฆฌ์ ๋ค๋ฅธ ๊ธ
๋ด๊ฐ ๋ณด๋ ค๊ณ ์ ๋ฆฌํ๋ JAVA ๋ฉํฐ ์ค๋ ๋ 3- ์ค๋ ๋ ์ํ (0) | 2021.10.05 |
---|---|
๋ด๊ฐ ๋ณด๋ ค๊ณ ์ ๋ฆฌํ๋ JAVA ๋ฉํฐ ์ค๋ ๋ 2 - ๋๊ธฐํ ๋ฉ์๋์ ๋๊ธฐํ ๋ธ๋ก (0) | 2021.09.28 |
๊ฐ์ฒด ์งํฅ ํ๋ก๊ทธ๋๋ฐ - ๊ฐ์ฒด, ์บก์ํ (0) | 2020.12.05 |
Enum Type ์ฌ์ฉํ๊ธฐ (0) | 2020.11.17 |
[JAVA] ์ ๋ฐ์ดํฐ ํ์ ์ ๋ถ๋ฅ (0) | 2020.06.23 |