经典简单的线程池操作
1、带线程等待
经典定义线程池
import com.google.common.util.concurrent.ThreadFactoryBuilder; import org.springframework.context.annotation.Bean; import org.springframework.context.annotation.Configuration; import org.springframework.scheduling.annotation.EnableAsync; import org.springframework.scheduling.concurrent.ThreadPoolTaskExecutor; import java.util.concurrent.ThreadFactory; import java.util.concurrent.ThreadPoolExecutor; /** * 功能描述 : 线程池配置 * * @author : dbc */ @Configuration @EnableAsync public class ThreadPoolConfig { @Bean public ThreadPoolTaskExecutor simpleThreadPool() { ThreadFactory threadFactory = new ThreadFactoryBuilder() .setNameFormat("siccs-pool-%d").build(); ThreadPoolTaskExecutor threadPoolTaskExecutor = new ThreadPoolTaskExecutor(); threadPoolTaskExecutor.setAllowCoreThreadTimeOut(true); threadPoolTaskExecutor.setThreadFactory(threadFactory); threadPoolTaskExecutor.setCorePoolSize(32); threadPoolTaskExecutor.setKeepAliveSeconds(60); threadPoolTaskExecutor.setMaxPoolSize(64); threadPoolTaskExecutor.setQueueCapacity(80); threadPoolTaskExecutor.setRejectedExecutionHandler(new ThreadPoolExecutor.CallerRunsPolicy()); return threadPoolTaskExecutor; } }
开线程小例子
@Autowired ThreadPoolTaskExecutor myThreadPoolTaskExecutor;
可以看看代码
// 线程池跑sql 大sql拆分小sql 避免大sql的压力 strat CompletableFuture<Void> Future1 = CompletableFuture.runAsync(() -> { // 你的方法 }, myThreadPoolTaskExecutor); // test CompletableFuture<Void> Future2 = CompletableFuture.runAsync(() -> { // 你的方法 }, myThreadPoolTaskExecutor); CompletableFuture<Void> Future3 = CompletableFuture.runAsync(() -> { // 你的方法 }, myThreadPoolTaskExecutor); // 等待所有线程执行结束 CompletableFuture.allOf(Future1, Future2, Future3).get(); // 线程池跑sql 大sql拆分小sql 避免大sql的压力 end
本文作者为DBC,转载请注明。