Springboot之@EnableAsync
1.@EnableAsync可以让Spring启用异步方法执行,跟配置注解@Configuration结合
2.使用的时候@Async加上方法的Bean名称
下面的例子是访问test/thread的URL时候可以看到先在网页上打印,然后过了5000个单位的时间后控制台才输出,实现了简单的线程池例子
例子仓库https://gitee.com/lordoftime/javaLearn
Controller
@Controller
@RestController
@RequestMapping("test")
public class ThreadController {
@Autowired
private ThreadService threadService;
@RequestMapping("thread")
@ResponseBody
public String RunTH()
{
threadService.Threadss();
return "the page is showing but the console is not";
}
}
线程配置类
@Configuration
@EnableAsync
public class ThreadConfig {
@Bean("taskExecutor")
public Executor myThreadExetor()
{
ThreadPoolTaskExecutor threadPoolTaskExecutor=new ThreadPoolTaskExecutor();
threadPoolTaskExecutor.setCorePoolSize(5);//核心线程数量
threadPoolTaskExecutor.setMaxPoolSize(20);//最大线程数量
threadPoolTaskExecutor.setKeepAliveSeconds(60);//线程闲置的时候存活的时间
threadPoolTaskExecutor.setThreadNamePrefix("baoliang_test");
threadPoolTaskExecutor.initialize();
return threadPoolTaskExecutor;
}
}
Service
@Service
public class ThreadServiceImpl implements ThreadService {
@Override
@Async("taskExecutor")
public void Threadss() {
try {
Thread.sleep(5000);
System.out.println("runinggggg~~~~~~~~~~~~~~~~");
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
interface
public interface ThreadService {
public void Threadss();
}