https://docs.oracle.com/javase/tutorial/essential/concurrency/runthread.html

프로세스

프로그램의 실행중인 인스턴스. 프로세스들 간에 변수와 같은 상태를 공유 하지 않는다. (단, IPC / 공유메모리 등은 제외)

스레드

프로세스 내에서 실행되는 작업의 단위. 변수와 같은 상태를 공유한다.

스레드 생성 방법의 '기본' 두가지

그외 몇가지 더 있지만, '기본' 두가지만 하였다.

그러면 두가지 중 무얼 사용해하나?

Which of these idioms should you use? The first idiom, which employs a Runnable object, is more general, because the Runnable object can subclass a class other than Thread. The second idiom is easier to use in simple applications, but is limited by the fact that your task class must be a descendant of Thread. 그럼 무얼 사용해야 하나? 일반적으로, Runnable 객체를 제공하는 것이 더 일반적이다. 왜하면 Runnable을 사용하는 것이 Thread를 사용하는 것보다 확장성 있기 때문이다. 또한 Thread를 확장하는 것은 반드시 Thread의 자식이어야 한다는 제한이 있다. (즉, 유연하지 못하다는 이야기)

스레드 잠들기 - Sleep

Thread.sleep

인터럽트