공부기록/Java

스레드(3)

jhs0129 2021. 8. 7. 17:35
320x100
반응형
  • 우선순위

우선순위를 직접 지정하기 위해서  setPriority()사용해서 직접 상수 혹은 Thread.MAX_PRIORITY와같은 클래스 상수 사용

 

  • Synchronized(동기화)

여러 스레드가 하나의 객체에 접근을 하려고 할 때 값의 잘못된 변경을 막기 위해서 스레드를 잠금

동기화를 설정하는 것은 인스턴스, 정적메소드 어디든 붙일 수 있다.

public synchronized void method(){
	//하나의 스레드만 실행가능
}

public void method(){
	//여러 스레드 실행가능
    
	synchronized(공유객체){
    	//하나의 스레드만 실행가능
    }
}

 

  • 스레드 상태

실행 대기 - notifyAll(), notify(), yield() : 양보 후 대기

일시정지 - sleep(long time) : 일정 시간동안 정지한후 다시 대기상태로 돌입, wait(long time), join() : 해당 메소드 실행한 스레드는 일시정지 실행 대기가 되기 위해서는 해당 메소드를 실행한 스레드의 종료 혹은 일정시간 후에

종료 - stop()

 

*interrupt() - 일시정지 상태의 스레드에 예외를 발생시켜 실행대기 혹은 종료 상태로 

*객체를 생성하고 start를 하면 실행 대기상태 <->(반복) 실행-> 종료 과정

 

  • 데몬스레드

주 스레드의 작업을 도와주는 보조 스레드, 주 스레드가 종료되면 강제로 자동 종료됨

데몬스레드 설정하기 위해서 setDemon(true)호출 *단 start()호출 전에 설정해야함 IllegalThreadStateException 예외발생할 수 있음

 

  • 스레드 그룹, 스레드 풀

스레드 그룹 - 동일한 목적을 가진 스레드를 묶어서 관리할때 이용된다.

*두개는 더 공부 후에 작성 아직 자세히 모르겠음

 

320x100
반응형