进行异步操作
主要针对某一个操作慢,会影响主线程的响应速度问题
一、并发小
创建一个线程异步
new Thread(() -> {
// ......
}).start();
二、并发大
使用线程池
import java.util.concurrent.*;
import java.util.concurrent.atomic.AtomicInteger;
public class ThreadUtils {
public static ThreadPoolExecutor getThreadFactory(){
int corePoolSize=2;
int maximumPoolSize=3;
int keepAliveTime=60;
TimeUnit unit=TimeUnit.SECONDS;
//任务队列,存储要执行的任务
BlockingQueue<Runnable> workQueue=
new ArrayBlockingQueue<>(1);
//创建线程的工厂
ThreadFactory threadFactory=new ThreadFactory() {
private String prefix="thread-service";
private AtomicInteger atomicInteger=new AtomicInteger(0);
@Override
public Thread newThread(Runnable task) {
return new Thread(task,prefix+atomicInteger.incrementAndGet());
}
};
RejectedExecutionHandler handler=
new ThreadPoolExecutor.CallerRunsPolicy();//由调用者去执行
//构建线程池对象
ThreadPoolExecutor threadPool= new ThreadPoolExecutor(
corePoolSize,
maximumPoolSize,
keepAliveTime,
unit,
workQueue,
threadFactory,
handler);
return threadPool;
}
}
使用
ThreadPoolExecutor executor = ThreadUtils.getThreadFactory();
executor.execute(new Runnable() {
@Override
public void run() {
// ......
}
});