版权声明:送人玫瑰,手有余香,一分也是爱 https://blog.csdn.net/m0_37156901/article/details/86498839
接下来介绍线程池相关的类:
1. ThreadPoolExecutor
看类的源码,
1 . 知道参数的含义 ,
2. 知道如何构造一个实例,
3. 如何使用一个实例。
二、介绍线程池实例的几种状态
看这个类提供的方法
监控
executor框架,三个接口
接下来具体看一下线程池以及使用。
package com.mmall.concurrency.threadpool;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
@Slf4j
public class newFixedThreadPoolDemo {
public static void main(String[] args) {
// ExecutorService executorService = Executors.newCachedThreadPool();
// ExecutorService executorService = Executors.newFixedThreadPool(3);
ExecutorService executorService = Executors.newSingleThreadExecutor();
for (int i=0;i<10;i++){
final int index = i;
executorService.execute(new Runnable() {
@Override
public void run() {
log.info("thread{}",index);
}
});
}
executorService.shutdown();
}
}
ScheduleExecutorService很特别
package com.mmall.concurrency.threadpool;
import lombok.extern.slf4j.Slf4j;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.ScheduledExecutorService;
import java.util.concurrent.TimeUnit;
@Slf4j
public class newScheduleThreadPoolDemo {
public static void main(String[] args) {
// ExecutorService executorService = Executors.newCachedThreadPool();
// ExecutorService executorService = Executors.newFixedThreadPool(3);
// ExecutorService executorService = Executors.newSingleThreadExecutor();
ScheduledExecutorService scheduledExecutorService = Executors.newScheduledThreadPool(3);
// 这里用Timer也能实现
scheduledExecutorService.scheduleAtFixedRate(new Runnable() {
@Override
public void run() {
log.info("schedule run");
}
}, 1, 3, TimeUnit.SECONDS);
}
}
整体看juc