프로그램
실행이 안된 상태
프로세스
실행된 프로그램
운영체제로부터 시스템 자원을 할당받는 작업의 단위
JAVA는 운영체제가 바로 실행시켜주지 않고 JVM에 의해 실행되기 때문에
JVM으로부터 시스템 자원을 할당받는다.
쓰레드
프로세스의 처리 경로
단일 쓰레드
- 처리 경로를 한 개만 가지고 있기 때문에 직렬적이다.
- 동시에 많은 양을 처리하기 힘들기 때문에 상대적으로 비효율적이다.
- 하지만 하나의 작업에 문제가 발생하더라도 다른 작업에는 영향을 끼치지 않는다.
- 따라서 안정성이 보장된다.
- 설계도 멀티 쓰레드에 비해 쉽다.
멀티 쓰레드
- 하나의 프로세스를 동시에 처리하는 것처럼 보이지만 사실은 매우 짧은 단위로 분할해서 차례로 처리한다.
- 여러 개의 처리 경로를 가질 수 있도록 하며, 동시 작업이 가능해진다.
- 설계하기 굉장히 어려우며, 하나의 쓰레드 문제 발생 시 모든 쓰레드에 문제가 발생하게 된다.
- JAVA 웹 개발 시 사용되는 웹 서버가 대표적인 멀티 쓰레드이다.
- 멀티 쓰레드로 설계했다면, 처리량 증가, 효율성 증가, 처리비용 감소의 장점이 있기 때문에
- 단점을 감수하고 설계하는 편이다.
전적으로 JVM에 의해 스케줄링(등록)된다.
-----------------------------------------------------------------------
멀티 쓰레드 구현 방법
1. Thread 클래스 상속
2. Runnable 인터페이스 지정


--------------------------------------------------------------------------------------------------


============================================================================
[실습] : 제한시간 15분
동석이네 동물원에는 3마리의 동물이 있다.
각 동물은 울음 소리가 다르고 2마리의 동물은 동시에 운다.
나머지 1마리 동물은 2마리 동물이 모두 울고 나서 마지막에 운다.
package명은 threadTest로 만들고 클래스는 2개만 선언한다.
하나의 클래스에는 main쓰레드가 있다.
Runnable 인터페이스로 멀티 쓰레드를 구현하고 반드시 join()을 사용한다.
※각 동물은 10번씩만 운다.


============================================================================
동기화(Synchronized)
하나의 쓰레드가 실행 중일 때 다른 쓰레드가 동시에 같은 필드를 사용하지 못하게 막는 것.
1. synchronized(mutex){ ... }
일부 소스코드만 동기화를 걸어준다.
2. synchronized 키워드
키워드를 사용한 메소드 전체에 동기화를 걸어준다.
'JAVA' 카테고리의 다른 글
[JAVA] 형변환, 변수 (0) | 2022.02.08 |
---|---|
[JAVA] 파일 입출력 (0) | 2021.11.21 |
[JAVA] HashSet, HashMap (0) | 2021.11.21 |
[JAVA] 컬렉션 프레임워크 - ArrayList (0) | 2021.11.20 |
[JAVA] Object 클래스, Wrapper 클래스 (0) | 2021.11.20 |