1. Process란?
Process는 Cpu에 의해 Memory에 올려져 실행중인 프로그램을 의미한다.
JVM ( Java Virtual Machine ) 은 주로 하나의 프로세스로 실행되며, 동시에 여러 작업을 수행하기 위해 멀티 스레드를 지원한다.
2. Thread란?
Process안에서 실직적으로 작업을 실행하는 단위를 의미한다.
Java에서는 JVM에 의해 관리된다.
Process안에 적어도 한개 이상의 Thread가 존재한다.
3. Thread 생성 방법
1. Thread 클래스 상속
public class Test {
public static void main(String[] args){
TestThread threadOne = new TestThread();
threadOne.start();
TestThread threadTwo = new TestThread();
threadTwo.start();
}
}
class TestThread extends Thread{
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
// 결과
// Thread-1
// Thread-0
2. Runnable 인터페이스 구현
start
public class Test {
public static void main(String[] args){
Runnable runnable = new TestThread();
Thread threadOne = new Thread(runnable);
Thread threadTwo = new Thread(runnable);
threadOne.start();
threadTwo.start();
}
}
class TestThread implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
// 결과
// Thread-0
// Thread-1
run
public class Test {
public static void main(String[] args){
Runnable runnable = new TestThread();
Thread threadOne = new Thread(runnable);
Thread threadTwo = new Thread(runnable);
threadOne.run();
threadTwo.run();
}
}
class TestThread implements Runnable{
@Override
public void run() {
System.out.println(Thread.currentThread().getName());
}
}
// 결과
// main
// main
4. Thread의 Run과 Start의 차이점
위 코드를 보면 start의 경우 각각의 Thread의 이름을 반환하지만
run의 경우 같은 이름을 반환한다.
이는 start는 멀티 스레드, run은 싱글 스레드로 동작됐다는걸 알려준다.
start 메소드는 Thread를 새로 생성하고 run 메소드를 호출한다.
또한 동일한 객체를 두번 호출시 예외가 발생한다.
run 메소드는 Thread 생성 없이, Runnable 인터페이스의 run 메소드만 호출한다.
반응형
'Java' 카테고리의 다른 글
Long과 long의 차이 & 참조 타입과 원시 타입 (0) | 2024.01.17 |
---|---|
Huge Traffic Handling (대규모 트래픽 처리) (0) | 2024.01.16 |
Excel Download With POI (0) | 2023.03.21 |
Atomic (0) | 2023.02.27 |
Consumer (0) | 2023.02.09 |