프로세스 : 실행중인 프로그램 , 자원과 쓰레드로 구성

쓰레드 : 프로세스 내에서 실제 작업을 수행  (프로세스= 공장 , 쓰레드 = 일꾼)

 

싱글쓰레드 프로세스: 자원+ 쓰레드

멀티쓰레드 프로세스 : 자원+쓰레드 다중

 

 

쓰레드의 구현

  public static void main(String[] args) {
        Runnable r = new ThreadEx1();
        Thread t1 = new Thread(r);
        t1.start(); //스레드 실행

        ThreadEx2 t2 = new ThreadEx2();
        t2.start();
    }

}

class ThreadEx1 implements Runnable {
    public void run() {
        for (int i=0; i<50;i++) {
            System.out.println(Thread.currentThread().getName()); //현재 실행중인 스레드
        }
    }
}

class ThreadEx2 extends Thread { //상속
    public void run() {
        for (int i=0; i<50;i++) {
            System.out.println(this.getName());  //Thread클래스의 getName;
        }
    }
}

알아둬야 할점 : 출력결과 ThreadEx1 과 ThreadEx2가 섞이면서 실행됨.(t1이 앞에있어도 반드시 먼저 실행되는게아님)

                          (OS의 스케쥴러에 따라 실행결과가 바뀜)

                          main 메소드로 출력했을 때는 앞에꺼가 실행되야지 뒤에꺼가 실행됨.

  

쓰레드 - 사용자쓰레드 , 데몬쓰레드(보조쓰레드) , 사용자 쓰레드가 하나도 없을때 프로그램 종료

 

싱글쓰레드가 멀티쓰레드보다 시간은 덜 걸린다(멀티쓰레드는 context switching때문)

멀티쓰레드는 시간이 더 걸리더라도 동시에 두개 이상의 작업이 가능하다는 장점

 

쓰레드의 우선순위를 지정할 수 있다. (setPriority)

 

 

+ Recent posts