프로세스보다 더 작은 실행 단위이다.
어떠한 프로그램 내에서, 특히 프로세스 내에서 실행되는 흐름의 단위를 말한다.
둘 이상의 스레드를 동시에 실행할 경우, 이러한 방식을 멀티스레드라고 부른다.

두 개의 스레드를 실행하고 있는 하나의 프로세스를 도식화 시킨것이다.
프로세스안에 여러 스레드들이 있고 실행을 위한 프로세스 내 주소공간이나 메모리공간을 공유한다.
JVM에서도 스레드가 실행된다. 우리가 사용하는 Main() 메소드가 Java의 메인 스레드이다.
public class Main {
public static void main(String[] args) {
TestThread thread = new TestThread();
thread.start();
}
}
class TestThread extends Thread { //Java에서 제공하는 Class Thread를 상속받아 사용한다.
@Override
public void run() {
for (int i = 0; i <100; i++) {
System.out.print("*");
}
}
}
public class Main {
public static void main(String[] args) {
Runnable run = new TestRunnable();
Thread thread = new Thread(run);
thread.start();
}
}
class TestRunnable implements Runnable { //Java에서 제공하는 인터페이스 Runable을 상속받아 사용한다.
@Override
public void run() {
for (int i = 0; i <100; i++) {
System.out.print("$");
}
}
}
https://ko.wikipedia.org/wiki/%EC%8A%A4%EB%A0%88%EB%93%9C_(%EC%BB%B4%ED%93%A8%ED%8C%85)