package com.neutron.t23;
import java.util.Random;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
/**
* 线程池
* 1.固定个数的线程池
* 2.缓存线程池,开始线程数0
* 如果需要线程,当前线程池没有,那么创建线程池
* 如果需要线程,线程池中有没有使用的线程,那么使用已经存在的线程
* 如果线程池中线程超过60秒(默认)没有使用,那么该线程停止
* 3.只有1个线程的线程池
* 保证线程执行的先后顺序
* 4.ScheduledPool
* 和DelayedQueue类似,定时执行
*/
public class T241ScheduledPool {
public static void main(String[] args) throws InterruptedException, ExecutionException {
// 创建个数为4的定时任务线程池
ScheduledExecutorService service = Executors.newScheduledThreadPool(4);
/*
* Runnable command, 执行任务
long initialDelay, 延迟时间
long period, 固定周期
TimeUnit unit 时间单位
*/
service.scheduleAtFixedRate(() -> {
try {
TimeUnit.MILLISECONDS.sleep(new Random().nextInt(1000));
} catch (InterruptedException e) {
e.printStackTrace();
}
System.out.println(Thread.currentThread().getName());
}, 0, 500, TimeUnit.MILLISECONDS);
// service.shutdown();
}
}
thread51 - ScheduledPool
最新推荐文章于 2023-07-23 20:32:27 发布