하드 디스크에서 데이터를 메모리에 로드하면 이 데이터는 프로세스라고 불립니다. 프로세스는 CPU를 통해 관리됩니다. 모든 프로세스는 하나의 스레드를 가지고 있습니다. 메모리는 데이터를 찾을 때 랜덤 액세스를 하게 됩니다.
하드 디스크에서 메모리로 데이터를 로드하거나 아웃풋으로 보내는 것을 로드 및 아웃풋이라고 합니다. 하드 디스크 입장에서 데이터의 저장은 인풋(저장), 나가는 것은 아웃풋입니다. 데이터를 저장하는 것을 I/O라고 하며, 컴퓨터에서 가장 느리게 동작합니다. 이때 CPU는 기다리는 상태가 됩니다.
따라서 I/O 동안에는 CPU의 스레드를 분리하여 다른 스레드에게 I/O를 맡겨줌으로써 주 스레드는 다른 작업을 수행할 수 있게 됩니다. CPU가 작동할 때는 하나의 스레드로만 동작하지만, 두 개의 스레드를 생성하여 마치 두 개의 CPU가 작동하는 것처럼 보이게 할 수 있습니다. 스레드는 여전히 하나만 돌고 있지만, 다른 스레드를 하나의 CPU가 넘어다니며 동작함으로써 동시에 실행되는 것처럼 보입니다.
CPU가 너무 빠르게 돌기 때문에 컨텍스트 스위칭을 하려면(두 개의 작업을 동시에 수행하려면) 기다리는 시간이 필요합니다.
멀티 스레드를 사용하는 이유는 I/O를 기다리는 동안에 CPU가 대기하는 것이 아니라, 기다리는 동안 다른 작업을 수행할 수 있도록 하기 위함입니다.
자바는 운영체제(OS)의 기능을 사용하여 네이티브 기능을 수행합니다.