Java/개념

JAVA 싱글쓰레드와 멀티쓰레드의 차이점

정복잉 2020. 7. 14. 02:30
반응형
package day19;
//싱글쓰레드
public class ThreadExam03 {
	public static void main(String[] args) {
		long startTime = System.currentTimeMillis();
		
		for(int i=0;i<300;i++) 
			System.out.printf("%s", new String("-"));
		System.out.println("소요시간1:"+(System.currentTimeMillis()-startTime));
		
		for(int i=0;i<300;i++) 
			System.out.printf("%s", new String("|"));
		System.out.print("소요시간2:"+(System.currentTimeMillis()-startTime));
	}

}

package day19;
//멀티쓰레드
public class ThreadExam04 {
	static long startTime = 0;
	public static void main(String[] args) {
		MultThread mt = new MultThread();
		mt.start();
		startTime = System.currentTimeMillis();
		
		for(int i=0;i<300;i++) 
			System.out.printf("%s",new String("-"));
			System.out.print("소요시간1"+(System.currentTimeMillis()-ThreadExam04.startTime));
	}

}
class MultThread extends Thread{

	@Override
	public void run() {
		for(int i=0;i<300;i++) 
			System.out.printf("%s",new String("|"));
			System.out.print("소요시간2"+(System.currentTimeMillis()-ThreadExam04.startTime));
	}
	
}

※개념정리

 

싱글쓰레드

단순한 CPU만 사용하는 계산작업의 적합 ->컨테스트 스위칭 때문

*컨테스트 스위칭? 프로세스 또는 쓰레드 간의 전환

 

멀티쓰레드

서로 다른 자원을 사용하는 작업의 경우 멀티쓰레드가 적합

 

<멀티쓰레드의 장단점>
장)
CPU의 사용률 향상
자원을 보다 효율적으로 사용
사용자에 대한 응답성 향상
작업이 분리되어 간결한 코드

단)
동기화와 교착상태 발생가능성