使用ExecutorService线程池执行异步任务教程(Runnable任务为例)

1,开启线程池
这里我们使用 java 线程池 ExecutorService,首先在项目中添加如下配置类,其作用在于 Spring 启动时自动加载一个 ExecutorService 对象。(如果存在直接调用参考下图方法)

@Configuration
public class ThreadPoolConfig {
@Bean
public ExecutorService executorService() {
   	 return Executors.newCachedThreadPool();
 }
}

2.创建异步任务
这里我们实现 Runnable 接口来创建一个异步任务,里面代码很简单,就是等待个 5 秒再执行方法。
public class SyncCfeService implements Runnable {
private String name;

public SyncCfeService (String name) {
    this.name = name;
}

@Override
public void run() {
    System.out.println("正在执行线程......");
    try {
        Thread.sleep(5000);
         System.out.println("执行方法.");
    } catch (Exception e) {
        e.printStackTrace();
    }
    System.out.println("执行完毕");
 }
}

3,执行异步任务
(1)这里我们在一个 Cotroller 中通过线程池执行这个异步任务:

@RestController
public class HelloController {
@Autowired
ExecutorService executorService;

@GetMapping("/hello")
public void hello() {
    System.out.println("开始一个线程");
    executorService.execute(new SyncCfeService ("name "));
    System.out.println("线程开启成功");
 }
}

注意:如果runnable方法中需要注入其他类会报空指针。报空指针是因为,线程防注,解决方式通过构造方法拿值:
1,首先将需要的值传入我们新建的异步方法类SyncCfeService 中(此方法在service中直接执行异步方法)
在这里插入图片描述
2,异步方法类中接收需要用到的参数
在这里插入图片描述
3,异步方法类中执行需要调用的方法
在这里插入图片描述

  • 0
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 2
    评论
评论 2
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值