무의미한 반복, yield() - 스레드 상태 제어

CODEDRAGON Development/Java

반응형

 

 

무의미한 반복

스레드 처리작업은 반복 실행을 위해 while문이나 for문을 포함하는 경우가 많이 있습니다.

스레드가 시작되어 run()메소드를 실행하면 while(true){}블록을 무한 반복합니다.

만약 isWork의 값이 false라면 그리고 isWork의 값이 false에서 true로 변경되는 시점이 불명확하다면 while문은 어떠한 실행문도 실행하지 않고 무의미한 반복을 하게 됩니다.

이것보다는 다른 스레드에게 실행을 양보하고 자신은 실행대기 상태로 가는 것이 전체 프로그램 성능에 도움이 됩니다.

 

public void run(){

while(true){

if(isWork){

System.out.println("Thread 작업 내용");

}

}

}

 

 

 

yield()

yield() 메소드를 호출한 스레드는 실행 대기 상태로 돌아가고 동일한 우선순위 또는 높은 우선순위를 가지는 다른 스레드가 실행 기회를 가질 수 있도록 해 줍니다.

 

무의미한 반복을 줄이기 위해 yield()메소드를 호출해서 다른 스레드에게 실행 기회가 돌아가도록 수정한 코드입니다.

 

public void run(){

while(true){

if(isWork){

System.out.println("Thread 작업 내용");

}else{

Thread.yield();

}

}

}

 

 

 

반응형

'Development > Java' 카테고리의 다른 글

FileInputStream& FileOutputStream  (0) 2017.10.24
join(), join() 스레드 상태 도식도  (0) 2017.10.24
sleep() - 스레드 상태 제어  (0) 2017.10.24
OutputStream의 주요 메소드  (0) 2017.10.24
표준 입출력  (0) 2017.10.24