728x90
반응형
쓰레드(Thread)란?
쓰레드는 프로세스 내에서 독립적으로 실행되는 작은 실행 단위를 말합니다. 자바에서는 Thread 클래스를 통해 쓰레드를 생성하고 관리할 수 있습니다.
쓰레드 생성 방법
Thread 클래스 상속
class MyThread extends Thread {
public void run() {
// 쓰레드가 실행할 코드 작성
}
}
public class Main {
public static void main(String[] args) {
MyThread myThread = new MyThread();
myThread.start();
}
}
Runnable 인터페이스 구현
class MyRunnable implements Runnable {
public void run() {
// 쓰레드가 실행할 코드 작성
}
}
public class Main {
public static void main(String[] args) {
Thread myThread = new Thread(new MyRunnable());
myThread.start();
}
}
예제: 간단한 두 쓰레드 동시 실행
class MyThread extends Thread {
public void run() {
for (int i = 0; i < 5; i++) {
System.out.println(Thread.currentThread().getId() + " Value " + i);
}
}
}
public class Main {
public static void main(String[] args) {
MyThread thread1 = new MyThread();
MyThread thread2 = new MyThread();
thread1.start();
thread2.start();
}
}
위 예제에서는 두 개의 쓰레드가 각각 0부터 4까지의 값을 출력합니다.
동기화(Synchronization)
쓰레드 간에 자원을 공유할 때 문제가 발생할 수 있습니다. 동기화를 통해 이를 해결할 수 있습니다.
class Counter {
private int count = 0;
public synchronized void increment() {
count++;
}
public int getCount() {
return count;
}
}
public class Main {
public static void main(String[] args) {
Counter counter = new Counter();
Thread thread1 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter.increment();
}
});
Thread thread2 = new Thread(() -> {
for (int i = 0; i < 1000; i++) {
counter.increment();
}
});
thread1.start();
thread2.start();
try {
thread1.join();
thread2.join();
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println("Counter: " + counter.getCount());
}
}
이 예제에서는 Counter 클래스를 사용하여 두 쓰레드가 공유하는 카운터를 안전하게 증가시키고 출력합니다.
728x90
반응형
'Java > Java이론' 카테고리의 다른 글
자바 데이터베이스 연동 (JDBC) (0) | 2023.11.27 |
---|---|
쓰레드 풀(Thread Pool) (1) | 2023.11.21 |
자바 입출력 스트림(Java I/O Streams) (0) | 2023.11.10 |
자바 스트림(Stream) (0) | 2023.11.07 |
자바 람다식 (0) | 2023.11.06 |