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의 사용률 향상
자원을 보다 효율적으로 사용
사용자에 대한 응답성 향상
작업이 분리되어 간결한 코드
단)
동기화와 교착상태 발생가능성