회의 참석자에게 메시지를 브로드 캐스트하는 회의 브로드 캐스트 응용 프로그램을 만들고 있습니다. 5 분 후에 실행되는 모임 데이터 검사기 스레드가 있습니다. 이 코드 사용하여이 작업을 수행 한 다음 DataAccessScedule에 쿼리 15 분 후에 시작 될 것으로 예상되는 회의의 데이터를 얻을 이제주어진 시간에 실행되는 스레드를 구성하는 방법
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(1);
scheduledExecutorService.scheduleWithFixedDelay(new DataAccessSchedule(), 0, 5,TimeUnit.MINUTES);
을, 그래서 나는 15 분 전에 데이터와 테이블의 시간을 얻을 01:45, ... 01:50, ... 01:52, ..
그래서 현재 시간과의 차이를 취하여 밀리 초 단위로 시간을 계산했습니다. 이제 밀리 즈 시간은 x입니다. , y 및 z. x, y, z 시간에 스레드를 실행하고 이러한 스레드가 실행 후 자체를 파괴합니다. 위와 같이 실행 프로그램을 사용하여 스케줄러를 실행하고 싶지 않습니다. 어떻게해야합니까?
이 코드를 사용하여 스레드를 호출합니다. ScheduledExecutorService executorService = Executors.newSingleThreadScheduledExecutor(); \t \t \t \t \t \t executorService.schedule (new MeetingBroadcaster(), InvokingTimeInSec, TimeUnit.SECONDS); 회의 횟수에 따라 1에서 n 번 실행될 수있는 루프에 있으므로 여기에 두 가지 질문이 있습니다. 1. 객체가 다시 생성되면 다시 참조 객체가 생성되므로 이전 객체 (스레드)가 삭제됩니다 새로운 객체 참조로 대체하십시오. 2. 스레드가 성공적으로 실행되면 스레드가 자체를 파괴합니까? – AsadYarKhan
정확한 실행 시간을 전달할 수 없다면, 항상 계획 시간과 현재 시간의 차이를 계산 한 다음 그 차이를 분 또는 초로 전달할 수 있습니다. 이상적은 아니지만 작동 할 것입니다. Btw, ScheduledExecutorService에 대한 API 설명서가 있습니까? 모든 사용자가 여기에서 사용하는 API에 익숙하지 않으므로 질문에 이러한 세부 사항을 언급해야합니다. – ADTC
여기에 http://docs.oracle.com/javase/1.5.0/docs/api/java/util/concurrent/ScheduledExecutorService.html – AsadYarKhan