결론

java.lang.Thread 를 사용하지 말고, java.util.concurrent 패키지를 활용하라.

public class Concurrent {
  public static void main(String[] args) {
    ExecutorService exec = Executors.newSingleThreadExecutor();
    exec.execute(runnable);
    exec.shutdown();
  }
}

멀티 쓰레드를 직접 할 에는, Executors.newFixedThreadPool 을 사용하거나, ThreadPoolExecutor 을 직접 사용하라

Runnable vs Callable

Callable 은 Runnable 과 비슷하지만 값을 반환하고 임의의 예외를 던질 수 있다.

ForkJoinTask

Fork-Join Pool 이라는 Executor Service 를 실행해 줌