프로세스 : 컴퓨터가 어떤 일을 하고있는 상태

동시성 : 프로세스 하나가 여러작업을 돌아가면서 일부분씩 진행(Context Switching)
병렬성 : 프로세서 하나에 코어 여러개가 달려서 각각 동시에 작업을 수행

스레드 : 한 프로세스 안에도 여러 갈래의 작업이 진행되는것

프로세스들은 컴퓨터의 자원을 분할해서 사용하지만
스레드는 프로세스마다 주어진 전체 자원의 역할을 함께 사용
주어진 자원의 역할을 공유하기때문에 충돌하여 에러가 날 가능성이 높고 오류의 원인을 찾거나 디버깅을 하기도 까다로운 경우가 많다.

스레드의 프로그램 오류(스레드 두개가 동시에 라면을 가져갈 때 카운팅이 1개만 되는 오류)를 방지하기 위해서
JAVA의 장치중 하나로 synchronized 블럭이 있다.
synchronized 블럭 안에 있는 변수들은 한 번에 한 스레드만 손을 댈 수 있다.

profile
문제 해결을 위해 끊임없이 파고드는 걸 좋아합니다.

0개의 댓글