2017-05-15 5 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

あなたは、それが呼び出されるたびにブザーで実際の時間をチェックして、唯一の要求hosrでビープ音を出すことができます:あなたはScheduledExecutorServiceを使用する必要が

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

?特定の時間にタスクをスケジュールするのは良くありません。これは、遅延/反復動作に使用されることを意味します。あなたはクォーツを見たことがありますか?ドキュメントには素晴らしい例があり、ライブラリではタスクの時間について非常に具体的にすることができます。

//編集:あなたが使用することができ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リクエストを送信することはできますか?はいの場合は、サンプルコードをお願いしますか? –

関連する問題