일 | 월 | 화 | 수 | 목 | 금 | 토 |
---|---|---|---|---|---|---|
1 | 2 | |||||
3 | 4 | 5 | 6 | 7 | 8 | 9 |
10 | 11 | 12 | 13 | 14 | 15 | 16 |
17 | 18 | 19 | 20 | 21 | 22 | 23 |
24 | 25 | 26 | 27 | 28 | 29 | 30 |
31 |
- Rename to
- 네트워크
- Oracle
- css
- Create
- position속성
- 자바
- html요소
- tcp와 udp의 차이점
- database
- 80 to 443
- html
- 속성
- 바닐라js
- 예외처리
- 리캡차
- 시맨틱 태그
- Java
- cs질문
- Failed to read the 'responseText' property from 'XMLHttpRequest'
- 스프링부트
- 구글 리캡차
- 스프링 부트
- 신입개발자
- 자바의 장점
- CSS display 속성
- css position
- multiarray
- 기술면접
- 기술 면접
- Today
- Total
Building value
Java[스레드(Thread)] 본문
Thread란, 프로세스 내에서 실행되는 작은 실행 단위를 말합니다.
여러 개의 Thread를 사용하여 한 번에 여러 가지 작업을 수행하거나, 더 빠르게 처리하는 것이 가능합니다.
Java에서는 Thread를 구현하기 위해 Thread 클래스를 제공합니다.
Thread 클래스는 Runnable 인터페이스를 구현하고, run() 메서드를 오버라이드하여 스레드가 실행할 코드를 작성합니다.
public class SimpleThread extends Thread {
public void run() {
// 스레드가 실행할 코드 작성
for (int i = 0; i < 5; i++) {
System.out.println("Thread " + Thread.currentThread().getId() + ": " + i);
try {
Thread.sleep(1000); // 1초 동안 스레드를 중지
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public static void main(String[] args) {
// 스레드 객체 생성
SimpleThread thread1 = new SimpleThread();
SimpleThread thread2 = new SimpleThread();
// 스레드 실행
thread1.start();
thread2.start();
}
}
// 출력 결과:
Thread 10: 0
Thread 11: 0
Thread 10: 1
Thread 11: 1
Thread 10: 2
Thread 11: 2
Thread 10: 3
Thread 11: 3
Thread 10: 4
Thread 11: 4
위 예시 코드에서 SimpleThread 클래스는 Thread 클래스를 상속하고
run() 메서드를 오버라이드하여 스레드가 실행할 코드를 작성합니다.
main() 메서드에서 SimpleThread 클래스의 객체를 생성하고, start() 메서드를 호출하여 스레드를 실행합니다.
스레드가 실행되면 run() 메서드에서 Thread.currentThread().getId() 메서드를 사용하여
현재 실행 중인 스레드의 ID를 출력하고, 1초 동안 스레드를 중지합니다. 이를 5번 반복하게 됩니다.
public class ThreadExample {
public static void main(String[] args) {
// Runnable 인터페이스를 구현하는 객체 생성
Runnable runnable1 = new Runnable() {
@Override
public void run() {
// 0부터 9까지 출력
for (int i = 0; i < 10; i++) {
System.out.println(i);
try {
Thread.sleep(100); // 100밀리초간 일시정지
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
// Runnable 인터페이스를 구현하는 객체 생성
Runnable runnable2 = new Runnable() {
@Override
public void run() {
// 10부터 19까지 출력
for (int i = 10; i < 20; i++) {
System.out.println(i);
try {
Thread.sleep(100); // 100밀리초간 일시정지
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
};
// 스레드 객체 생성
Thread thread1 = new Thread(runnable1);
Thread thread2 = new Thread(runnable2);
// 두 스레드의 실행을 동기화하여 번갈아 가면서 실행하도록 함
synchronized (ThreadExample.class) {
thread1.start();
try {
ThreadExample.class.wait(); // 메인 스레드 일시정지
} catch (InterruptedException e) {
e.printStackTrace();
}
thread2.start();
}
}
}
다음은 두 개의 스레드를 이용하여 숫자를 출력하는 예시 코드입니다.
먼저 첫 번째 스레드는 0부터 9까지의 숫자를 출력하고, 두 번째 스레드는 10부터 19까지의 숫자를 출력합니다.
이 때, 각 스레드의 실행을 동기화하여 두 스레드가 번갈아 가면서 숫자를 출력하도록 합니다.
위 코드에서는 Runnable 인터페이스를 구현하는 익명 클래스를 사용하여 각각의 스레드 객체를 생성합니다.
그리고 두 스레드의 실행을 동기화하기 위해 synchronized 블록과 wait() 메서드를 사용합니다.
synchronized 블록은 ThreadExample 클래스에 대한 모니터 락을 얻어서 실행하고,
wait() 메서드는 메인 스레드를 일시정지시켜 두 번째 스레드의 실행을 기다리게 합니다.
이렇게 함으로써 두 스레드는 번갈아 가면서 실행되며 숫자를 출력하게 됩니다.
'Java' 카테고리의 다른 글
Java[파일&폴더(File&Folder)] (0) | 2023.03.29 |
---|---|
Java[스트림(Stream)] (0) | 2023.03.29 |
Java[람다식(Lambda)] (0) | 2023.03.29 |
Java[Iterator] (0) | 2023.03.29 |
Java[HashMap] (0) | 2023.03.29 |