Executor框架
线程池
newFixedThreadPool()
//线程池中的线程数量始终不变,新任务提交,有空闲线程立马执行,否则会将任务加入到任务队列,有线程空闲时,便处理在任务队列中的任务。
newSingleThreadExecutor()
//线程池中的线程数量为1,新任务提交,线程空闲则立马执行,否则会将任务加入到任务队列,待线程空闲时,便处理在任务队列中的任务。
newCachedTheadPool()
//可根据实际情况调整线程池数量,优先使用空闲线程,待无空闲线程,又有新任务时,创建新的线程执行。
public static void main(String[] args) {
ExecutorService executorService=Executors.newFixedThreadPool(5);
for(int i = 0 ; i < 10 ; i ++) {
executorService.submit(
()->{
System.out.println(Thread.currentThread().getId());
try {
Thread.sleep(2000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
);
}
executorService.shutdown();
}
计划任务
newSingleThreadScheduledExecutor()
//线程池中的线程数量始终未1,在指定时间执行某任务
newScheduledThreadPool()
//线程池可以指定线程数量
public static void main(String[] args) {
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(5);
scheduledExecutorService.scheduleAtFixedRate(
()->{
try {
Thread.sleep(4000);
System.out.println(System.currentTimeMillis()/1000);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
,0,2, TimeUnit.SECONDS);
}