용어
- processor: 보통 cpu를 말함
- core: 프로세스 일을 나눠서 하는 것이 코어
- process: 실행한 프로그램 하나 의미
- thread: 프로세스 안에 여러 작은 일들
- 단점: 속도 더 떨어지고, 메모리도 더 먹음
- 동시에 효과가 나야하는 작업들이 존재하기 때문에 쓰레드 사용
개념
- 방식
- runnable interface
- 쓰레드 클래스를 상속하는 경우는 다를 클래스를 상속하지 못함 --> 인터페이스로 구현하는 것이 더 일반적
- thread class
- 생성자
- thread(string t): 쓰레드 이름
- thread(runnable r): 인터페이스 객체
- 특징
- run() 메소드 종료하면 쓰레드는 종료
- 한번 종료한 쓰레드는 다시 시작 할 수 없음
- 쓰레드 객체를 다시 생성
thread class
class ThreadA extends Thread
{
public void run()
{
}
}
- ThreadA TA = new ThreadA();
TA.start();
- thread 클래스 상속 --> run 구현 해야함
- 실행 할 때는 start 메쏘드로 실행해야 함
- 내부적으로 start 실행 한 경우 run이 수행 되도록 구현
runnable interface
-
의미
- runnable 인터페이스를 구혀한 클래의 인스턴스를 대상으로 Thread 클래스의 인스턴스 생성!
- 다중 상속이 안되므로 다른 것을 상속 받은 객체를 바탕으로 thread 객체를 만든다고 생각하면 될듯
- 객체 생성시 반드시 패러미터로 runnable 클래스를 보내줘야함
-
runnable 인터페이스 안에는 run() 메쏘드가 정의되어 있으므로 --> run()을 반드시 구현해야함
-
extend만 implement로 바꿔 주면 됨
public class HelloRunnable implements Runnable {
public void run(){
System.out.println("Hello from a thread!");
}
public static void main(String args[]) {
Thread myThread = new Thread(new HelloRunnable ());
myThread.start();
}
}
메쏘드
- join
- 쓰레드가 종료 될 때까지 기다리게 하는 메소드