在实际的工作中,我们会需要执行一些无返回的多线程任务以改善系统的运行效率。
接受kafka消息并对这些消息进行处理是一个典型案例,如果这里使用多线程的处理方式可以大大提高系统的处理性能。
以下就对CompletableFuture.runAsync的使用方式做一个案例展示
先定义一个处理的任务,这里可能是一个Runnable也可能是一个Callable,区别就是在于有无返回值
import lombok.extern.slf4j.Slf4j;
/**
* @author yhgu
* @date 2020-11-xx
*/
@Slf4j
public class Task implements Runnable {
private Integer count;
public Task(Integer count) {
this.count = count;
}
@Override
public void run() {
for (Integer i = count; i>=0; i--) {
log.info("I'm counting {}", i);