Java - 문제 미리보기
문제 2404
medium
다음 코드에서 빈칸에 들어갈 적절한 메서드는?
```java
public class Main extends Thread {
public static int amount = 0;
public static void main(String[] args) {
Main thread = new Main();
thread.start();
// 스레드가 종료될 때까지 대기
while (thread.______()) {
System.out.println("Waiting...");
}
System.out.println("Final amount: " + amount);
}
public void run() {
amount++;
}
}
```
```java
public class Main extends Thread {
public static int amount = 0;
public static void main(String[] args) {
Main thread = new Main();
thread.start();
// 스레드가 종료될 때까지 대기
while (thread.______()) {
System.out.println("Waiting...");
}
System.out.println("Final amount: " + amount);
}
public void run() {
amount++;
}
}
```
정답: C
`isAlive()` 메서드는 스레드가 아직 실행 중인지 확인하는 Thread 클래스의 메서드입니다.
isAlive() 메서드의 특징:
1. 기능:
⦁ 스레드가 시작되었고 아직 종료되지 않았으면 `true` 반환
⦁ 스레드가 시작되지 않았거나 이미 종료되었으면 `false` 반환
2. 사용 목적:
⦁ 다른 스레드의 작업 완료를 기다릴 때
⦁ 동시성 문제 해결을 위한 간단한 동기화
3. 스레드 생명주기와의 관계:
```java
Thread thread = new MyThread();
// NEW 상태 - 아직 시작 안됨
System.out.println(thread.isAlive()); // false
thread.start();
// RUNNABLE 상태 - 실행 중
System.out.println(thread.isAlive()); // true
// run() 메서드 완료 후
// TERMINATED 상태 - 종료됨
System.out.println(thread.isAlive()); // false
```
💡 학습 팁
이 문제를 포함한 Java 과목의 모든 문제를 순차적으로 풀어보세요. 진행상황이 자동으로 저장되어 언제든지 이어서 학습할 수 있습니다.