Ch13-7~13. I/O blocking
0. 목차
Chapter13. 쓰레드
Ch13 - 7. main 쓰레드
Ch13 - 8. 싱글 쓰레드와 멀티 쓰레드
Ch13 - 9. 싱글 쓰레드와 멀티 쓰레드 예제1
Ch13 - 10. 싱글 쓰레드와 멀티 쓰레드 예제2
Ch13 - 11. 쓰레드의 I/O블락킹(blocking)
Ch13 - 12. 쓰레드의 I/O블락킹(blocking) 예제1
Ch13 - 13. 쓰레드의 I/O블락킹(blocking) 예제2
Ch13 - 7. main 쓰레드
▶ main 쓰레드란?
▷ main 메서드의 코드를 수행하는 쓰레드
▶ main 쓰레드의 2가지 종류
▷ 사용자 쓰레드
- main 메서드에서 코드를 수행
▷ 데몬 쓰레드
- 사용자 쓰레드의 보조 쓰레드
▷ 실행 중인 사용자 쓰레드가 하나도 없을 때 프로그램은 종료
Ch13 - 8. 싱글 쓰레드와 멀티 쓰레드
▶ 싱글 쓰레드
▷ 순차적 진행
▶ 멀티 쓰레드
▷ OS 스케쥴러의 알고리즘에 따라 쓰레드의 시간과 실행 순서 변동
▷ OS는 특정 프로그램만 신경쓸 수 없음
▷ A와 B를 번갈아 가며 실행
▷ A에서 B로 바뀌는 것 : Context Swiching
- 이 때
시간
이 좀 걸림
▷ 시간이 걸려도 채팅하면서 파일 전송이 가능함 즉, 멀티 기능이 가능
Ch13 - 9. 싱글 쓰레드와 멀티 쓰레드 예제1
▶ 멀티 쓰레드
▷ 실행 할 때마다 console 결과가 다름
▷ OS 스케쥴러 때문
class Ex13_3 {
static long startTime = 0;
public static void main(String args[]) {
ThreadEx3_1 th1 = new ThreadEx3_1();
th1.start();
startTime = System.currentTimeMillis();
for(int i=0; i < 300; i++)
System.out.printf("%s", new String("-"));
System.out.print("소요시간1:" + (System.currentTimeMillis() - Ex13_3.startTime));
}
}
class ThreadEx3_1 extends Thread {
public void run() {
for(int i=0; i < 300; i++)
System.out.printf("%s", new String("|"));
System.out.print("소요시간2:" + (System.currentTimeMillis() - Ex13_3.startTime));
}
}
- 실행1
// console ||||||||||||||||||||||||||||||-------------------------------||||||||||||||||||||||||||||||||||||||||| ---------------------||-----------------------------------------------------------------|||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||------|||||||||||||||||||||||||||||||||||||||||||||||||||| |||||||||||||||||||||--------------------------------------------------------------------------------- -------------------------------------------------------------|||||||||||||||||||||||||||||||||||||||||| -----------------------------------소요시간1:74||||||||||||||||||||||||||||||||||||||||||||||||||||||소요시간2:76
- 실행2
// console --|||||||||||||--||||||||||||||||||||||||||||||||||||||--||----||||||||||||||||||||----------|||||||||||||| ||||||||||--------||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||----- ------------------------------------------------------------------------------|||||||||||||||||||||||||||||| |||||||||||||||||||||||||||||||||||||||-----||||||||||||||||||||||||||||||||||||||||||||||||||------------- -----------------------------------------------------------소요시간2:66--------------------------------------- -------------------------------------------------------------------------소요시간1:71
- 실행3
// console --------------------------------------------------------------------------------------------------------------- |||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||||-------------- ---------------------------------------------------------------------------------------------||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||--------------------------------------------------------------------- -------------||||||||||||||||||||||||||||||소요시간1:69|||||||||||||||||||||||||||||||||||||||||||||||||||||||||| ||||||||||||||||||||||||||||||||||||||||||||||||||||||소요시간2:74
Ch13 - 10. 싱글 쓰레드와 멀티 쓰레드 예제2
▶ 싱글 쓰레드
▷ 순차적 실행
▶ 멀티 쓰레드
▷ OS 스케쥴러에 의해 순서와 시간 결정
Ch13 - 11. 쓰레드의 I/O블락킹(blocking)
▶ I/O블락킹(blocking)이란?
▷ I : Input
▷ O : Output
▷ blocking : 막힘
▷ 입출력 시 막히는 것
Ch13 - 12. 쓰레드의 I/O블락킹(blocking) 예제1
▶ 싱글 쓰레드의 I/O블락킹(blocking)
▷ BLOCKING 시간 동안 아무것도 못함
Ch13 - 13. 쓰레드의 I/O블락킹(blocking) 예제2
▶ 멀티 쓰레드의 I/O블락킹(blocking)
▷ NO BLOCKING