
동기 : 일의 순서가 있다.
비동기 : 일의 순서가 없다.
(스레드를 사용해야 하기 때문에 컴퓨터에 부하가 많이 생긴다.)

자바는 단일스레드 이기 때문에 동기적이다.
꺽정이가 인쇄해오는 3초를 멍때리고 대기
보고가 인쇄해오는 3초를 멍때리고 대기
순신이가 인쇄해오는 동안 멍때리고 대기
그런데 스레드를 이용하면
꺽정이 일시키고 기다리지 않고 보고에게 일시키고 또 순신이도 바로 일시키니까
멍때리는 시간이 없다.
동기적으로 처리하면 모두 메인 스레드이지만
비동기적으로 처리하면 메인스레드 하나에 서브스레드 3개
멀티 스레드를 왜 사용할까?
1. 눈속임을 위해 사용
스레드는 속도를 위한 게 아니라 UX를 위해서 쓰는것.
ex) 화면의 반은 빨강 반은 파랑으로 칠하는 경우
빨강 다 칠하고 저장하고 파랑 다 칠하는 게 빠르지만,
빨강 칠하고 저장하고 파랑 칠하고 저장하고 빨강 칠하고 ~
반복으로 동시에 칠하는 것 처럼 보이게 할 수 있다.

2. CPU가 멍때리는 시간을 없애줌
CPU는 연산장치, 메모리는 저장장치
2번 작업 3초 동안 멍때리게 되니까

CPU가 일하지 않는 것을 스레드에 맡기면 CPU가 멍때리는 시간을 없애주어 속도가 빨라진다.

모든 자바 어플리케이션은 Main Thread가 main() 메소드를 실행하면서 시작됩니다.
싱글 스레드 같은 경우 메인 스레드가 종료되면 프로세스도 종료되지만,
멀티 스레드는 메인 스레드가 종료되더라도 실행 중인 스레드가 하나라도 있다면 프로세스는 종료되지 않습니다.
'Language > Java' 카테고리의 다른 글
| String Constant Pool / 문자열 비교는 equals (0) | 2023.04.10 |
|---|---|
| 예외처리(Exception) : try-catch (0) | 2023.04.07 |
| 스레드(thread) (0) | 2023.04.07 |
| 컬렉션(Collection) - ArrayList (0) | 2023.04.06 |
| 제네릭(Generic), 와일드카드<?> (0) | 2023.04.06 |