2014-09-28 2 views
0

스레드를 확장하는 클래스 (ThreadClient) 인스턴스를 주 Java 프로젝트로 작성했습니다. ThreadClient.run이 ThreadClient 클래스의 2 가지 메소드를 주기적으로 실행하려면 2 개의 타이머를 시작해야한다.Java : 타이머를 사용하여 주기적으로 메소드를 실행하십시오.

Internet에서 찾은 예제는 타이머가 Thread 클래스를 나타내는 classe 인스턴스의 run 메서드를 시작할 수 있다는 것을 보여줍니다. 타이머를 만드는 동일한 클래스의 두 메서드를 실행하기 위해 새 클래스를 만들어야합니다. C#을 같은 뭔가을 수행합니다

public class ThreadClient 
{ 
    private Timer _timer; 

    public ThreadClient() { 
     Start(); 
    } 

    private void Start() 
    { 
     _timer = new Timer(3000); // Set up the timer for 3 seconds 
     _timer.Elapsed += new ElapsedEventHandler(_timer_Elapsed); 
     _timer.Enabled = true; // Enable it 
    } 

    private void _timer_Elapsed(object sender, ElapsedEventArgs e) 
    { 
     // do something 
    } 
} 

방법 _timer_Elapsed 타이머를 생성 클래스에 속한다. 사전에

감사합니다, 나는 마침내 내 목표에 도달하는 방법은 사무엘

+0

이렇게 붙어 있니? (의도 한 말장난) – Sikorski

+0

무엇이 당신의 질문입니까? 자바가 C ​​#이 아닌 것에 대한 호언 장담인가요? Java에는 익명 클래스와 람다가 있습니다. 그들을 사용하여 배우십시오. –

+0

또한 ScheduledExecutorService를 사용해야합니다. http://docs.oracle.com/javase/8/docs/api/java/util/concurrent/Executors.html#newScheduledThreadPool-int- –

답변

0

: 내가없이 모든 방법에 대한 새로운 클래스를 만들 타이머를 사용하여 클래스의 2 가지 방법을 실행할 수있는이 방법으로

// Timer to process sales 
    TimerTask ttProcessSales = new TimerTask() { 

     @Override 
     public void run() { 
      processSales(); 
     } 
    }; 
    Timer tProcessSales = new Timer(); 
    tProcessSales.schedule(ttProcessSales, 0, this._processTaskTimeInterval); 

    // Timer to process tasks 
    TimerTask ttProcessTask = new TimerTask() { 

     @Override 
     public void run() { 
      processTasks();    
     } 
    }; 
    Timer tProcessTasks = new Timer(); 
    tProcessTasks.schedule(ttProcessTask, 0, this._processTaskTimeInterval); 

를 I 실행할 필요가있다.

관련 문제