2017-05-15 47 views
1

我需要在一天中的特定時間運行特定的Java程序,並且需要修改以下代碼以使其在特定時間運行。如何使用java scheduledExecutor服務在特定時間運行java代碼?

private final static ScheduledExecutorService scheduler = Executors.newScheduledThreadPool(1); 

public static void main(String args[]) { 
    final Runnable beeper = new Runnable() { 
     public void run() { 
      System.out.println("beep"); 
     } 
    }; 

    final ScheduledFuture<?> beeperHandle = scheduler.scheduleAtFixedRate(beeper, 0, 1, SECONDS); 
    scheduler.schedule(new Runnable() { 
     public void run() { 
      beeperHandle.cancel(true); 
     } 

    }, 60 * 60, SECONDS); 
} 

回答

0

您可以檢查實際時間的蜂鳴器每次調用它,只有在要求該車發出蜂鳴聲:

public void run() { 
    if (Calendar.getInstance().get(Calendar.HOUR_OF_DAY) == REQUESTED_HOUR) { 
      System.out.println("beep"); 
    } 
1

你必須使用ScheduledExecutorService的?這在特定時間安排任務並不好。這是用於延遲/重複行動的一種理由。你見過石英?文檔有很好的例子,庫允許你對任務的時間非常具體。

//編輯: 這裏有例如實現示例:https://www.mkyong.com/java/quartz-2-scheduler-tutorial/ 您可以使用:https://hc.apache.org/httpcomponents-client-ga/examples.html 它允許做簡單的電話。像這樣:

HttpGet httpGet = new HttpGet("http://somesite.com"); 
BasicHttpClientConnectionManager manager = new BasicHttpClientConnectionManager(); 
HttpClient client = new MinimalHttpClient(manager); 
client.execute(httpGet); 

把這段代碼放到工作中,它應該工作。

+0

是否可以使用石英調度程序上的cron作業發送GET請求?如果是的話,你可以給出一個示例代碼嗎? –

相關問題