2009-11-29 5 views
0

3 분 후에 스윙 타이머가 작동하도록 설정하는 모듈이 있는데, 2 분이 지나면 해고되는 것을 볼 수 있습니다. Timer를 기다리는 동안 광범위한 스윙 작업이 진행되고 다른 스윙 타이머가 다른 스레드에서 사용되었음을 언급해야합니다. 이러한 활동이 타이머의 타이밍에 영향을 미칠 수 있습니까?스윙 타이머가 예상보다 일찍 만료됩니다.

답변

1

이 문서에서는 많은 수의 스윙 타이머를 사용하지 않도록 권장합니다.

이 읽기가 도움이되기를 바랍니다.

1

예, 확실히 간섭 할 수 있습니다.

예정된 활동이 많은 경우 ScheduledThreadPoolExecutor을 사용하여 작업을 예약하는 것이 더 나을 것입니다.

당신은 당신이 예약하고 Runnable의이 하나로 래퍼를 사용하여 예약 된 작업이 스윙 스레드에서 실행되고 있는지 확인하십시오 :

public abstract SwingRunnable implements Runnable 
{ 
    public final void run() 
    { 
     javax.swing.SwingUtilities.invokeLater(new Runnable() 
     { 
      public final void run() 
      { 
       runInSwing(); 
      } 
     } 
    } 

    protected abstract void runInSwing(); 
} 

더 나은 (당신은 당신이 무엇을 알고있는 경우 당신은 스케쥴 된 작업의 부분을 넣을 수 있습니다. 실제로는 이 스윙 스레드에서 스윙 스레드로 실행되어야합니다. 여기에 제공된 래퍼 코드는 코드를 스윙 스레드에 실행합니다. 이는 현재 javax.swing.Timer을 사용하여 수행중인 것과 같습니다.

관련 문제