2.백그라운드 작업 처리
어떤 작업을 메인 프로그램의 실행과 독립적으로 백그라운드에서 처리해야 할 때 스레드를 사용. 예를 들어, 파일 다운로드, 데이터베이스 업데이트, 주기적인 작업 등을 백그라운드 스레드에서 처리 가능
응답성 향상
UI (사용자 인터페이스)에서는 사용자의 입력에 빠르게 반응해야 하며 긴 시간 동안 수행되는 작업은 UI를 블록시키기 때문에 백그라운드 스레드에서 해당 작업을 수행함으로써 응답성을 향상
병렬 처리
다중 코어 프로세서를 활용하여 여러 작업을 병렬로 처리할 때 스레드를 사용, 이는 대용량 데이터 처리나 계산 위주의 작업에서 성능을 향상
이벤트 처리
이벤트 기반 프로그램에서는 이벤트를 처리하는 스레드를 따로 두어 메인 스레드가 다른 작업을 계속 처리 가능
데드락 피하기
여러 자원을 사용하는 경우, 데드락을 방지하고 성능을 최적화하기 위해 스레드를 사용할 수 있습니다.
1.Thread 클래스 상속
class MyThread extends Thread {
public void run() {
System.out.println("스레드 동작 중");
}
}
public class Main {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start(); // 스레드 실행
}
}
2.Runnable 인터페이스 구현
class MyRunnable implements Runnable {
public void run() {
System.out.println("스레드 동작 중");
}
}
public class Main {
public static void main(String[] args) {
Thread myThread = new Thread(new MyRunnable());
myThread.start(); // 스레드 실행
}
}
3. 두 방식의 차이점
public class LoadingThread extends Thread {
public void run() {
System.out.print("로딩 중");
for (int i = 0; i < 10; i++) {
try {
Thread.sleep(500); // 0.5초 대기
System.out.print(".");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
System.out.println("\n로딩 완료");
}
}
public class Main {
public static void main(String[] args) {
LoadingThread loadingThread = new LoadingThread();
loadingThread.start();
try {
loadingThread.join(); // 로딩 스레드가 종료될 때까지 대기
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("메인 작업 계속 진행");
}
}
💻 출력
로딩 중..........
로딩 완료
메인 작업 계속 진행