web-dev-qa-db-ja.com

10分ごとに関数を呼び出す

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

_CLASS A_と_CLASS B_の2つのクラスがある場合、_CLASS B_内にはfunb()という関数があります。この関数を_CLASS A_から10分ごとに呼び出します。

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

サンプルコードを投稿していただけますか?

26
user149537

ScheduledExecutorService を見てください。

1時間の間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);
    }
 }
27
Tim
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();
    }


}
15

これを試して。設定された分ごとに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.htmlhttp://docs.Oracle.com/javase/7/ docs/api/Java/util/TimerTask.html

11
Fnaf Server
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); 
    }
}
4
overflow

Java 8のソリューション

ClassB b = new ClassB();    
ScheduledExecutorService executor = Executors.newScheduledThreadPool(1);
Runnable task = () -> {
    b.funb();
};
executor.scheduleWithFixedDelay(task, 0, 10, TimeUnit.MINUTES);
0
byteprom