runbrick 发布的文章

xxxMapper

@Mapper
public interface xxxMapperextends BaseMapperX<AdminUserDO> {

    IPage<XXXDO> selectPage02(IPage<XXXDO> page, @Param("reqVO") XXXPageReqVO reqVO);

}

ServiceImpl

@Service
@Slf4j
public class AdminUserServiceImpl implements AdminUserService {

    @Override
    public PageResult<XXXDO> getUserPage(XXXPageReqVO reqVO) {
        // 必须使用 MyBatis Plus 的分页对象
        IPage<XXXDO> page = new Page<>(reqVO.getPageNo(), reqVO.getPageSize());
        userMapper.selectPage02(page, reqVO);
        return new PageResult<>(page.getRecords(), page.getTotal());
    }
}

在它出现之前,我们有 Future。但 Future 有一个巨大的痛点:

  • 阻塞性Future.get() 方法是阻塞的。一旦调用,你的线程就会被卡住,直到任务完成。这极大地浪费了线程资源。
  • 功能单一:你只能获取结果或取消任务,无法在一个任务完成后自动触发另一个任务,也无法组合多个任务。

CompletableFuture 解决了这些问题,它引入了回调(Callback) 机制,实现了非阻塞的、响应式的编程模型

- 阅读剩余部分 -

使用线程池的 submit()execute() 方法提交任务。

  • execute(Runnable): 提交不需要返回值的任务。
  • submit(Runnable/Callable): 提交任务,返回一个 Future 对象,可以用来跟踪任务状态和获取结果。调用 get() 方法可以获取 Callable 返回的值

- 阅读剩余部分 -