멀티프로세싱 - 프로세스 여러개가 동시에 작동해서 작업을 빨리 수행 하는 것
(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)

 

스레드 (컴퓨팅) - 위키백과, 우리 모두의 백과사전

위키백과, 우리 모두의 백과사전. 두 개의 스레드를 실행하고 있는 하나의 프로세스. 스레드(thread)는 어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다. 일반적으로 한 프로그램은 하나의 스레드를 가지고 있지만, 프로그램 환경에 따라 둘 이상의 스레드를 동시에 실행할 수 있다. 이러한 실행 방식을 멀티스레드(multithread)라고 한다. 프로세스와 스레드의 비교[편집] 멀티프로세스와 멀티스레드는 양쪽 모두 여러 흐름이 동

ko.wikipedia.org

 

문맥교환(컨텍스트 스위칭 context swiching)

여러가지 일을 시간을 쪼개서 돌아가면서 계속 하는 것

 

장점

1. 사람의 눈에 동시에 일을 하는 것 처럼 보임
2. 서버에서 그림 등의 데이터를 받는 등의 대기시간에 cpu가 다른 일을 할 수 있다

 

단점

1. 순서와 위치를 기억해야하기 때문에 느려짐 (컨텍스트 스위칭)

 

자바에는 기본적으로 main스택이라는 스레드를 가지고 있다

main스레드 이외의 스레드를 Target

Runnable 타입의 클래스 안에 run()메서드가 있고 그 스레드는 Target이 될 수 있다

 

스레드는 OS가 들고 있다 (윈도우 등)

OS에 스레드를 더 실행해달라고 요청해야 한다. (Runnable타입으로)

OS는 램에서 Runnable 타입의 힙을 찾고 run() 메서드를 실행한다 - 콜백

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

OS가 들고 있는 기능을 사용하는 것을 시스템 콜이라고 한다

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

IPC

데이터 통신을 할려면 시리얼라이즈를 해야한다 - 데이터 직렬화 - 직렬화는 마샬링의 일부

마샬링 - 프로세스간 데이터 통신할 때 데이터를 다른 프로세스가 읽을 수 있게 직렬화 하는 것
(클래스를 다른 곳으로 전송하면 String타입으로 전송되는데 그것을 다시 클래스로 만드는 등)

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

콜백

스레드가 메인 스레드에 이벤트를 전송

다른스레드가 종료 된것을 메인 스레드에 보냄

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

데이터베이스에서 동기화

데이터가 일치

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

프로세스에서 동기화

동기적 - 일의 순서가 일치해서 순서대로 실행됨

비동기적 - 일의 순서가 나뉘어서 여러개 실행됨

비동기 처리 - promise

비동기에서는 나중시간에 약속된 기능이 있다면

그 시간과 겹치는 앞쪽에 기능이 새로 추가 된다면 앞쪽기능이 실행되다가

약속된 기능이 실행된 뒤 나머지 앞쪽 기능이 실행된다

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

자바에서는 매개변수에 함수를 못넘기기 때문에
클래스를 만들어서 오브젝트를 매개변수로 넘겨서 그 안에 생성했던 함수를 이용한다
-> 익명클래스의 사용 이유

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

익명클래스

 

 

 

 

 

 

익명클래스로 스레드 추가도 가능

 

 

 

 

 

 

 

야매

 

해결

 

 

 

+ Recent posts