쓰레드(Thread)란?
쓰레드는 프로세스 내에서 실행되는 실행 단위이다. 여기서 프로세스란 실행 중인 프로그램을 말한다. 비유를 하자면 프로세스는 요리사, 쓰레드는 요리라고 할 수 있다. 한 요리사가 여러 요리를 동시에 할 수 있듯이, 하나의 프로세스도 여러 쓰레드를 동시에 실행할 수 있다.
쓰레드(Thread)를 사용하는 이유
쓰레드를 사용하는 주된 이유는 병렬 처리 때문이다. 병렬 처리를 통해 여러 작업을 동시에 진행함으로써 프로그램의 실행 효율을 높일 수 있다. 예를 들어, 한 프로그램이 데이터를 다운로드하는 동안 다른 쓰레드에서 사용자 인터페이스를 업데이트할 수 있다.
쓰레드(Thread)의 생성과 실행
class MyThread extends Thread {
public void run() {
// 쓰레드가 실행할 작업
}
}
MyThread t = new MyThread();
t.start(); // 쓰레드 실행
class MyRunnable implements Runnable {
public void run() {
// 쓰레드가 실행할 작업
}
}
Thread t = new Thread(new MyRunnable());
t.start(); // 쓰레드 실행
주의할 점
쓰레드는 동시에 여러 작업을 수행할 수 있지만, 실제로 병렬로 실행되는지는 실행 환경에 따라 다르다. 멀티 코어 프로세서에서는 진정한 병렬 실행이 가능하다.
쓰레드는 같은 프로세스 내의 자원을 공유한다. 이 때문에 여러 쓰레드가 같은 데이터에 접근하려 할 때 동기화 문제가 발행할 수 있다.
공유 자원을 사용할 때 발생할 수 있는 문제를 방지하기 위해 동기화(synchronization)와 같은 기술을 사용해야 한다.