● process : program + success = 프로그램 실행 성공(=프로그램 실행 중)

 

● Thread(스레드) : 컴퓨터에서 실제로 작업을 수행하는 것을 의미

 

● 스레드 생성 방법

    1. Runnable 인터페이스 사용 클래스명 옆에 implements Runnable

 

    2. Thread 클래스 상속받기     클래스명 옆에 extends Thread

 

    - 메서드와 관계없이 스레드를 시작할 때는 start() 사용해야 시작할 수 있음

    - 스레드에서 순서는 스레드가 컴퓨터 안에서 생성되고 시작되는 지점에 따라 달라짐

 

● 스레드 우선순위

   : 스레드는 기본으로 우선순위가 5

     -> 우선순위는 1~10 까지 존재

     setPriority(Thread.MIN_PRIORITY);

 

   - Thread.MIN_PRIORITY = 우선순위 1                 = CPU 자원을 가장 적게 확보

   - Thread.NORM_PRIORITY = 우선순위 5 (기본)

   - Thread.MAX_PRIORITY = 우선순위 10               = CPU 자원을 더 많이 확보

 

   - 만약에 우선순위를 1 5 10 이외의 우선순위를 사용하고 싶다면 

    -> setPriority(3) : 우선순위 3

    -> setPriority(6) : 우선순위 6

 

  ※ 스레드에서 말하는 우선순위는 CPU 자원을 더 많이 확보하는 우선순위

      우선순위가 높은 스레드가 항상 먼저 실행되는 것은 아님

 

● 메서드

    - sleep() :  ~~초 간 잠자는 상태 유지

                     └ 알아서 ~~초 후 실행

 

       // 현재 사용이 

     - suspend() : 일시 중지

                           └ 알아서 실행 X resume으로 일어나야지 시작 가능

 

     - resume() : 일시 중지한 스레드 다시 시작

 

     - wait() : 특정 조건이 충족될때까지 대기

     - Notify() : 대기 중인 스레드를 깨워 특정 작업을 진행하도록 함

 

     - await() : Condition 속한 스레드를 일시적으로 대기

     - signal() : await에 의해 대기하고 있는 스레드를 깨움

public class ThreadEx extends Thread {

	public void run() {
		System.out.println("스레드 실행 중");
		
		try {
			
			Thread.sleep(5000); // 1초동안 정지
			
			System.out.println("5초 끝!");
		} catch (InterruptedException e) {
			e.printStackTrace();
		} 
	}
}

'Java' 카테고리의 다른 글

Stack  (0) 2024.07.02
Socket  (0) 2024.07.01
FileWriter  (0) 2024.06.24
File  (0) 2024.06.20
예외처리 - Throws  (2) 2024.06.19

+ Recent posts