http://www.tcpschool.com/java/java_thread_concept
프로세스란 단순히 실행 중인 프로그램 이라고 할 수 있다.
즉 , 사용자가 작성한 프로그램이 운영체제에 의해 메모리 공간을 할당받아 실행 중인 것을 말한다.
스레드란 프로세스 내에서 실제로 작업을 수행하는 주체를 의미한다.
자바에서 스레드 생성하는방법은 두가지가 존재한다.
한가지는 extends Thread
로 인해서 상속 받는방법이고 ,
다른 하나는 Runnable
인터페이스를 구현하는 방법이다.
두 방법 모두 쓰레드를 통해 작업하고 싶은 내용을 run()
메소드에 작성하면 된다.
class ThreadWithClass extends Thread {
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(getName()); // 현재 실행 중인 스레드의 이름을 반환함.
try {
Thread.sleep(10); // 0.01초간 스레드를 멈춤.
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
class ThreadWithRunnable implements Runnable {
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getName()); // 현재 실행 중인 스레드의 이름을 반환함.
try {
Thread.sleep(10);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
}
public class Thread01 {
public static void main(String[] args){
ThreadWithClass thread1 = new ThreadWithClass(); // Thread 클래스를 상속받는 방법
Thread thread2 = new Thread(new ThreadWithRunnable()); // Runnable 인터페이스를 구현하는 방법
thread1.start(); // 스레드의 실행
thread2.start(); // 스레드의 실행
}
}
자바에서 각 스레드는 우선순위에 관한 자신만의 필드를 가지고 있다.
스레드의 우선순위는 비례적인 절대값이 아닌 어디까지나 상대적인 값이다.
단지 우선순위가 10인 스레드는 우선순위가 1인 스레드보다 좀 더 많이 실행 큐에 포함되어, 좀 더 많은 작업 시간을 할당받을 뿐입니다.