멀티프로세싱 - 프로세스 여러개가 동시에 작동해서 작업을 빨리 수행 하는 것
(1개의 프로세스가 3가지 작업을 15초에 할 수 있는데 3개의 프로세스로 나누어 작업하여 5초만에 할 수 있다)
멀티프로세싱 할 경우 cpu가 여러개 있으면 좋다 (병렬처리 가능)
프로그램이 멀티코어를 지원 할 경우에만 멀티프로세싱을 사용 할 수 있다
--------------------------------------
쓰레드
일을 실행하는 단위
일종의 스택
멀티스레드 - 라운드로빈 - 타임슬라이싱 - 일을 시간을 쪼개서 돌아가면서 함
스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다.
https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)
문맥교환(컨텍스트 스위칭 context swiching)
여러가지 일을 시간을 쪼개서 돌아가면서 계속 하는 것
장점
1. 사람의 눈에 동시에 일을 하는 것 처럼 보임
2. 서버에서 그림 등의 데이터를 받는 등의 대기시간에 cpu가 다른 일을 할 수 있다
단점
1. 순서와 위치를 기억해야하기 때문에 느려짐 (컨텍스트 스위칭)
자바에는 기본적으로 main스택이라는 스레드를 가지고 있다
main스레드 이외의 스레드를 Target
Runnable 타입의 클래스 안에 run()메서드가 있고 그 스레드는 Target이 될 수 있다
스레드는 OS가 들고 있다 (윈도우 등)
OS에 스레드를 더 실행해달라고 요청해야 한다. (Runnable타입으로)
OS는 램에서 Runnable 타입의 힙을 찾고 run() 메서드를 실행한다 - 콜백
--------------------------------------
OS가 들고 있는 기능을 사용하는 것을 시스템 콜이라고 한다
--------------------------------------
IPC
데이터 통신을 할려면 시리얼라이즈를 해야한다 - 데이터 직렬화 - 직렬화는 마샬링의 일부
마샬링 - 프로세스간 데이터 통신할 때 데이터를 다른 프로세스가 읽을 수 있게 직렬화 하는 것
(클래스를 다른 곳으로 전송하면 String타입으로 전송되는데 그것을 다시 클래스로 만드는 등)
------------------------------------
콜백
스레드가 메인 스레드에 이벤트를 전송
다른스레드가 종료 된것을 메인 스레드에 보냄
-----------------------------------
데이터베이스에서 동기화
데이터가 일치
------------------------------------
프로세스에서 동기화
동기적 - 일의 순서가 일치해서 순서대로 실행됨
비동기적 - 일의 순서가 나뉘어서 여러개 실행됨
비동기 처리 - promise
비동기에서는 나중시간에 약속된 기능이 있다면
그 시간과 겹치는 앞쪽에 기능이 새로 추가 된다면 앞쪽기능이 실행되다가
약속된 기능이 실행된 뒤 나머지 앞쪽 기능이 실행된다
-------------------------------------
자바에서는 매개변수에 함수를 못넘기기 때문에
클래스를 만들어서 오브젝트를 매개변수로 넘겨서 그 안에 생성했던 함수를 이용한다
-> 익명클래스의 사용 이유
----------------------------------
익명클래스
익명클래스로 스레드 추가도 가능
야매
해결
'Programming Language > Java' 카테고리의 다른 글
자바 채팅 프로그램 (0) | 2020.04.14 |
---|---|
200414 // 통신 - 모스키토, 브로드캐스트, 블루투스, 소켓 (0) | 2020.04.14 |
자바 기본자료형 클래스자료형 차이 이해하기 (0) | 2020.04.11 |
자바 공공데이터 마스크 약국 정보 이용하기 (0) | 2020.04.10 |
jsonchema2pojo 체크 포인트 (0) | 2020.04.10 |