자바 Thread2

개발하는개발자·2022년 9월 8일
0

Java Thread

목록 보기
4/10

싱글스레드, 멀티스레드

멀티스레드 작업 수행시 프로세스와 같이 스레드간 Context Switching이 존재한다.

기본적으로 스레드의 스위칭보다 프로세스의 스위칭이 오버헤드가 큰 이유는 더 많은 정보가 교환되기 때문이다.

//멀티코어상에서 두개의 쓰레드를 실행하는 경우
class ThreadEx5 {
    static long startTime = 0;

    public static void main(String args[]) {
        ThreadEx5_1 th1 = new ThreadEx5_1();
        th1.start();
        startTime = System.currentTimeMillis();

        for(int i=0; i < 300; i++) {
            System.out.print("-");
        }

        System.out.print("소요시간1:" + (System.currentTimeMillis() - ThreadEx5.startTime));
    }
}

class ThreadEx5_1 extends Thread {
    public void run() {
        for(int i=0; i < 300; i++) {
            System.out.print("|");
        }

        System.out.print("소요시간2:" + (System.currentTimeMillis() - ThreadEx5.startTime));
    }
}

멀티코어상에서 두개의 스레드를 실행하는 경우

--------------------------------------------|||||||||-------------------------------------------------------------------------||||||||||||||||||||||||||||||||||||||||||||||||||---------------------------------------------------------

다음과 같이 출력이 겹치는 경우가 발생한다.(싱글코어의 경우 겹치지 않는다)
두 쓰레드가 서로 다른 자원을 사용하는 경우 멀티스레드가 더 효율적이다. 싱글 스레드의 경우 들어온 요청에 대해 대기를 할 경우 대기시간이 낭비되기 때문이다.

profile
하루에 하나씩 배우자

0개의 댓글