2009-08-03 8 views
21

私は専門家ではなく、初心者です。だから私はあなたに私のためのコードを書くことを親切にお願いします。10分ごとに機能を呼び出す

CLASS ACLASS Bの2つのクラスがあり、CLASS Bの内部にはfunb()という機能があります。 10分ごとにこの機能をCLASS Aから呼び出したいと思います。

あなたはすでに私にいくつかのアイデアを与えていますが、私はかなり理解していませんでした。

サンプルコードを投稿できますか?

+4

が、私は有効な質問があります。この背後にどこかだと思います。それが私が編集した理由です。 – balpha

+1

@balpha:あなたはそこでいくつかの魔法を使いました: –

答えて

9
import java.util.Date; 

import java.util.Timer; 

import java.util.TimerTask; 

public class ClassExecutingTask { 

    long delay = 10 * 1000; // delay in milliseconds 
    LoopTask task = new LoopTask(); 
    Timer timer = new Timer("TaskName"); 

    public void start() { 
     timer.cancel(); 
     timer = new Timer("TaskName"); 
     Date executionDate = new Date(); // no params = now 
     timer.scheduleAtFixedRate(task, executionDate, delay); 
    } 

    private class LoopTask extends TimerTask { 
     public void run() { 
      System.out.println("This message will print every 10 seconds."); 
     } 
    } 

    public static void main(String[] args) { 
     ClassExecutingTask executingTask = new ClassExecutingTask(); 
     executingTask.start(); 
    } 


} 
+0

遅延を変更するだけ... –

+0

TimerTaskは廃止され、ExecutorServiceおよび関連する実装に置き換えられました。 – skaffman

+2

本当ですか?そう言っているものは何も見つかりません。私はあなたの情報源を見ることに興味があります。ありがとう! :) –

23

ScheduledExecutorServiceを見てください:ここで

は時間の10秒ごとにビープ音が鳴りScheduledExecutorServiceを設定する方法を持つクラスです:

import static java.util.concurrent.TimeUnit.*; 
class BeeperControl { 
    private final ScheduledExecutorService scheduler = 
     Executors.newScheduledThreadPool(1); 

    public void beepForAnHour() { 
     final Runnable beeper = new Runnable() { 
       public void run() { System.out.println("beep"); } 
      }; 
     final ScheduledFuture<?> beeperHandle = 
      scheduler.scheduleAtFixedRate(beeper, 10, 10, SECONDS); 
     scheduler.schedule(new Runnable() { 
       public void run() { beeperHandle.cancel(true); } 
      }, 60 * 60, SECONDS); 
    } 
} 
2
public class datetime { 

    public String CurrentDate() { 

     java.util.Date dt = new java.util.Date(); 
     java.text.SimpleDateFormat sdf = new java.text.SimpleDateFormat("yyyy-MM-dd HH:mm:ss"); 
     String currentTime = sdf.format(dt); 
     return currentTime; 

    } 

    public static void main(String[] args) { 
     class SayHello extends TimerTask { 

      datetime thisObj = new datetime(); 

      public void run() { 
       String todaysdate = thisObj.CurrentDate(); 
       System.out.println(todaysdate); 
      } 
     } 
     Timer timer = new Timer(); 
     timer.schedule(new SayHello(), 0, 5000); 
    } 
} 
6

てみてくださいこの。これは、設定された分ごとにrun()関数を繰り返します。設定した分を変更するには、MINUTES変数を変更してください。

int MINUTES = 10; // The delay in minutes 
Timer timer = new Timer(); 
timer.schedule(new TimerTask() { 
    @Override 
    public void run() { // Function runs every MINUTES minutes. 
     // Run the code you want here 
     CLASSB.funcb(); // If the function you wanted was static 
    } 
}, 0, 1000 * 60 * MINUTES); 
    // 1000 milliseconds in a second * 60 per minute * the MINUTES variable. 

輸入を忘れないでください!

import java.util.Timer; 
import java.util.TimerTask; 

詳細情報については、ここに行く:

http://docs.oracle.com/javase/7/docs/api/java/util/Timer.html http://docs.oracle.com/javase/7/docs/api/java/util/TimerTask.html

関連する問題