package MultiThreading;

import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;

public class ScheduledExecutorSrvc {
    public static void main (String args[]){
        ScheduledExecutorService scheduledExecutorService =
                Executors.newScheduledThreadPool(1);
//        for (int i = 0; i<10; i++){
//            scheduledExecutorService.execute(new RunnableImpl200()); //метод .execute() передаст таски в скедултредпулл
//        }
        //scheduledExecutorService
         //       .schedule(new RunnableImpl200(),3, TimeUnit.SECONDS);// метод .schedule() передаст таски для выполнения через указанный промежуток времени
        //scheduledExecutorService.shutdown(); //метод .shutdown() завершает работу скедултредпула
        //в противном случае если его не применить работа программы никогда не закончится
        scheduledExecutorService.scheduleAtFixedRate(new RunnableImpl200(),3,1,TimeUnit.SECONDS);// метод .scheduleAtFixedRate() будет выполнять переданный в него таск
        // до тех пор пока не будет остановлен мэйном
        //интервал считается с начала выполнения одного таска до начала выполнения следующего
        scheduledExecutorService.scheduleWithFixedDelay(new RunnableImpl200(),3,1,TimeUnit.SECONDS); //метод .scheduleWithFixedDelay делает
        // то же самое, что и  метод .scheduleAtFixedRate() но интервал считается от окончания таска до начала следующего
        try {
            Thread.sleep(8000);
        } catch (InterruptedException e) {
            throw new RuntimeException(e);
        }//если не сделать в мейне слип скедул выключится через одну итерацию
        scheduledExecutorService.shutdown();// выключает скедулл

        ExecutorService ex = Executors.newCachedThreadPool(); // создаёт тред пулл который автоматически
        // по мере надобности создаёт и удаляет необходимые для него потоки
    }
}
class  RunnableImpl200 implements Runnable{
    @Override
    public void run() {
        System.out.println(Thread.currentThread().getName());
//        try {
//            Thread.sleep(500);
//        } catch (InterruptedException e) {
//            throw new RuntimeException(e);
//        }

    }
}

Embed on website

To embed this program on your website, copy the following code and paste it into your website's HTML: