2014-11-29 7 views
0

java TimerTask Scheduler Application에서 작업 중입니다. 나는 스케줄러로 실행되는 서비스로 메인 클래스가 있습니다.TimerTask 응용 프로그램 설계 문제

I과 같이 일정 시간에 실행을 위해 사용되는 TaskSchedule() extends TimerTask 클래스 가지고 TaskSchedule 생성자 내부

timer.scheduleAtFixedRate(new TaskSchedule(), ...) 

내가 페치 및 데이터베이스의 값을 갱신하기위한 데이터베이스와 상호 작용하는 dataHelper 클래스가있다. TaskSchedule 클래스에서 TimerTask의 run 메서드를 재정의했습니다. 그리고 실행 방법 안에 나는 같은 매개 변수와 데이터베이스 도우미 전화 호출 오전 : 여기

@Override 
public void run(){ 
    dataHelper.fetchDataFromDB(?) 
} 

나는 내가 디자인에 갇혀 있어요 경우, 배치 한 질문을. 이 매개 변수를 데이터베이스 동적으로 유지하고 싶습니다.

한 솔루션 내가 생각의이다 : TaskScheduler에 서비스에서 dataHelper에 걸쳐 데이터베이스 매개 변수를 전달
. 하지만 디자인 수준에서 더 나은 솔루션을 찾고 있습니다.

답변

0

외부에서 설정할 수있는 공유 변수를 사용할 수 있으며 "fetchDataFromDB"보다 먼저 가져올 수도 있습니다. 동기화를해야합니다. mutex를 사용하여 공유 메모리를 보호하십시오. 또 다른 해결책은 청취자처럼 일종의 의사를 사용할 수 있으며 DB에서 가져올 때마다 청취자가 데이터를 가져와 데이터를 가져올 수 있다는 것입니다.