2012-05-05 3 views
0

저는 게임을위한 기본적인 자바 프로그래밍을 배우려고합니다.이 Java 애플릿 자습서 코드의 루프에서 스레드 우선 순위가 최대로 설정된 이유는 무엇입니까?

다음은 this tutorial here입니다. 애플릿의 실행 방법에 대한

그들의 골격 코드 :

public void run() 
{ 
    // lower ThreadPriority 
    Thread.currentThread().setPriority(Thread.MIN_PRIORITY); 

    // run a long while (true) this means in our case "always" 
    while (true) 
    { 
     // repaint the applet 
     repaint(); 

     try 
     { 
      // Stop thread for 20 milliseconds 
      Thread.sleep (20); 
     } 
     catch (InterruptedException ex) 
     { 
      // do nothing 
     } 

     // set ThreadPriority to maximum value 
     Thread.currentThread().setPriority(Thread.MAX_PRIORITY); 
    } 
} 

이 코드에서 그들은 처음에 최소 스레드 우선 순위를 설정합니다. 그런 다음 루프 내부에서 최대 값으로 설정합니다.

나는 이것의 목적이 무엇인지 궁금합니다.

+3

나에게도 꽤 어색해 보인다. 그것은 루프 앞에 min 우선 순위로 설정하고, * 무한 루프를 실행하며, 또한 첫 번째 반복 이후 스레드 우선 순위를 최대로 설정합니다. 이상하고 도움이되지 않는 튜토리얼처럼 보입니다. –

+0

그래, 우선 순위를 높이기위한 실제 배치는 조금 기괴합니다. 본질적으로, 루프를 시작하기 전에 우선 순위를 높이는 것이 좋습니다 (그러나 낮추지는 마십시오). 내 대답은 아래를 참조하십시오. 그러나 그들이 그것을 어디에 두 었는지, 그리고 처음에 최소로 설정 한 구체적인 배치 뒤에있는 이유는 즉시 명백하지 않습니다. –

+0

글쎄,이 게임은 나중에 더 복잡해지는 게임을위한 애플릿의 기본 골격에 불과하다고 생각합니다. 나는 이미 자바 게임에 대한 몇 가지 자습서를 시도했지만, 모두 비밀리에 모든 종류의 물건을 설명 할 수 없게 만들거나, 다른 방법으로 가서 모든 것을 던져 버린다. 나는 내가 할 수있는 한 최선을 다해 나가야한다고 결심했다. – kiman

답변

2

왜 처음에 우선 순위를 최소로 설정하기로 결정했는지 나는 알지 못합니다. 나는 이것이 무의미하다고 생각한다.

그러나 우선 순위를 보통보다 높게 (어쩌면 최대는 과장 임) 설정하는 것이 좋습니다.

일반적으로 짧은 동작을 반복적으로 수행하고 잠자기하는 스레드가 있다면 일반적으로 스레드의 확률을 최대화하고 최대화하면됩니다. 시간이지나면서 그 일을하고 다시 잠자기 상태로 돌아갑니다. "반복합니다. 대체로 스레드 우선 순위를 평균보다 높게 설정하면 이러한 상황이 발생할 확률이 높아집니다. 이것은 특히 스레드 우선 순위가 스레드 스케줄러가 "다음에 실행할 항목"을 결정하는 지점에서 예약 된 스레드에 기본적으로 영향을주는 Windows에 해당됩니다.

내가 몇 년 전에 쓴 Java thread priority에 실린 기사를 읽으면 관련 문제를 설명하는 데 도움이 될 수 있습니다.

+0

P. 나는 말해야한다 -이 예제에서의 우선 순위 세팅의 특별한 위치는 여전히 약간 기괴하다. 일반적으로 루프를 시작하기 전에 우선 순위를 높게 설정하고 그대로 두어도됩니다. –

+0

나는 그것을 얻는다라고 생각한다. 잠에 빠지기 때문에 다른 사람들에게 그들의 일을 할 수있는 기회가 주어 지지만, 잠에서 깨어나서 뛰면 그것이 제 시간에 그 일을 할 수 있는지 확인하기를 원합니다. 그 맞습니까? – kiman

+0

그건 생각입니다 :) –