∎ 스레드
코드의 실행 흐름
∎ 멀티 스레드
멀티 스레드에서 하나의 스레드는 나머지 스레드에 영향을 주기 때문에 예외 처리를 잘 해주어야 한다.
(ex. 서버 개발, 게임 개발에 많이 사용한다.)
- 자바 프로그램 실행시 JVM이 메인 스레드를 만들어 메인 메소드를 실행한다.
- 현재 실행 중인 스레드가 궁금하면 Thread 클래스를 이용하여 알아낼 수 있다.
- Thread 클래스를 이용하여 스레드를 작업할 수 있다.
<멀티 태스킹을 위해 스레드 만들기>
⦁ 스레드 생성 (방법1)
Thread thread = new Thread(Runnable target);
// 생성할 때, Runnable을 구현한 객체를 작성해주면 그것이 생성된다.
// Runnable 인터페이스에는 run() 추상 메소드 한개 정의되어 있다.
⦁ 생성된 스레드 대기 상태로
thread.start();
⦁ 스레드 생성 (방법2)
public class ThreadA extends Thread {
@Override
public void run() { }
}
Thread thread = new ThreadA();
// Thread 클래스의 run 메소드를 재정의
⦁ 스레드 생성 (방법3)
익명 자식 클래스를 만들어 Thread의 메소드 재정의
⦁ 스레드 이름 변경 : thread.setName("...");
<스레드 상태>
⦁ 스레드 생성, start( )하면 우선 ➞ 대기 상태(RUNNABLE)가 된다. (CPU 스케줄링 때문에)
⦁ run과 대기를 반복한 후, 모든 코드가 실행되면 종료(TERMINATED)가 된다.
⦁ core 개수에 따라 실행 가능한 스레드 개수가 정해진다.
⦁ Thread.sleep(...) : 일시정지 하기도 한다.
➞ main스레드가 먼저 돌아가고 있으므로, sumThread를 시작시키기 위해서는 join()을 이용해서 끼워넣기를 해야한다.
(중간에 sumThread가 실행되고, 그 이후 main스레드가 실행된다.)
무의미한 실행이 계속될 때, 다른 스레드에게 양보
➞ Thread.yield(); 사용
'개발 지식 > Java' 카테고리의 다른 글
컬렉션 프레임워크 (List, Set, Map) (0) | 2024.08.10 |
---|---|
스트림 (0) | 2024.08.10 |
배열 (0) | 2024.08.10 |
람다식 - 자바의 함수형 프로그래밍 (0) | 2024.08.10 |
추상 클래스와 인터페이스 (0) | 2024.08.10 |