ScheduledExecutorService定时器加固定大小线程池

ScheduledExecutorService定时器加固定大小线程池

后续增加java三大器(定时器,拦截器,过滤器)
定时器也可以使用SpringBoot提供的注解方式实现

直接代码

package sun.framework.genesis.beta.thread;

import lombok.SneakyThrows;
import lombok.extern.slf4j.Slf4j;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestMethod;
import org.springframework.web.bind.annotation.RestController;

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

/**
 * @Auther: SunDC
 * @Date: 2020/9/23 21:37
 * @Description: 定时器加固定大小线程池
 * 

* 定时器 Timer() */ @RestController @RequestMapping("/thread") @Slf4j public class ThreadDemoController { /*固定大小的线程池*/ ThreadPoolExecutor es = (ThreadPoolExecutor) Executors.newFixedThreadPool(3); @RequestMapping(value = "timer", method = {RequestMethod.POST, RequestMethod.GET}) public void Timer() { log.info("测试线程池的使用以及定时器的使用 , 使用微妙 体现线程池概念"); /*单线程池,同时只有一个线程在跑*/ ScheduledExecutorService service = Executors.newSingleThreadScheduledExecutor(); /* .scheduleWithFixedDelay 循环任务,以上一次任务的结束时间计算下一次任务的开始时间 .schedule 延时任务 .scheduleAtFixedRate 循环任务,按照上一次任务的发起时间计算下一次任务的开始时间 */ service.scheduleAtFixedRate(new Runnable() { @Override public void run() { es.execute(new Runnable() { @SneakyThrows @Override public void run() { System.out.println(Thread.currentThread().getName()); } }); log.info("一次任务结束"); } },0, 1, TimeUnit.MICROSECONDS); // log.info("测试线程池的使用以及定时器的使用 运用lambda表达式"); // service.scheduleAtFixedRate(() -> es.execute(()-> System.out.println(Thread.currentThread().getName())) , 0, 2, TimeUnit.SECONDS); } public static void main(String[] args) { new ThreadDemoController().Timer(); } }

你可能感兴趣的:(demo/utils,java,后端,多线程)