프로세스란 OS로 부터 할당 받는 자원의 실행 단위다. 좀 더 쉽게 풀어보자면 프로그램을 실행하면 자원을 할당 받은 프로그램의 인스턴스가 생기는데 이게 프로세스다.

프로세스는 독립된 메모리영역을 OS로 부터 할당 받음.
최소 1개 이상의 쓰레드를 가짐.
각 프로세스는 독립된 주소 공간에서 실행되어 일반적으로 다른 프로세스의 자원에 접근 할 수 없으며, 접근하려면 IPC라는 통신을 사용해야 한다.
쓰레드는 프로세스 내에서 실행되는 작업 단위다. 프로세스가 할당 받은 자원을 이용하며 쓰레드끼리는 메모리 자원을 공유한다.

쓰레드는 메모리 자원을 공유한다. 단, 레지스터와 stack만 쓰레드 별로 할당.
하나의 쓰레드가 프로세스 자원은 변경하면, 이웃 스레드도 그 결과를 즉시 볼 수 있다.
한 줄평 : 위 쓰레드는 일반적인 정의를 말한 것이다. 자바의 쓰레드도 거의 동일하지만 차이점은 자바의 쓰레드는 프로세스가 아니라 JVM에서 실행된다.
참고 -
https://gmlwjd9405.github.io/2018/09/14/process-vs-thread.html