hello world
Java并发之从Thread到CompletableFuture
Java
13 次阅读·
- 1. 为什么要学习 Java 并发›
- 2. start工程›
- 3. Thread 基础:从一个线程处理一个 PDF 开始›
- 4. start() 和 run() 的区别›
- 5. join:主线程怎么等待子线程结束›
- 6. Runnable:线程和任务到底有什么区别›
- 7. 多个线程如何分工处理 PDF›
- 8. 线程安全问题:count++ 为什么不安全›
- 9. synchronized:先用最直接的方式解决线程安全›
- 10. 对象锁和类锁到底锁的是什么›
- 11. Spring Boot 单例 Bean 为什么还能处理并发请求›
- 12. ReentrantLock:手动加锁和释放锁›
- 13. 可重入锁:Reentrant 到底是什么意思›
- 14. Semaphore:控制同一时间最多处理几个 PDF›
- 15. Semaphore 实战:限制 PDF 并发处理数量›
- 16. CountDownLatch:等待一批 PDF 全部处理完成›
- 17. CyclicBarrier:让多个线程在某个位置互相等待›
- 18. 为什么工作中不建议一直 new Thread›
- 19. ThreadPoolExecutor:线程池的基本使用›
- 20. 线程池里的任务是怎么排队和执行的›
- 21. 线程池的拒绝策略怎么选›
- 22. 线程池参数怎么配置才合理›
- 23. 用 ThreadPoolExecutor 批量处理 PDF 水印›
- 24. execute 和 submit 的区别›
- 25. Future:怎么拿到异步任务的结果›
- 26. Future 超时、取消和任务状态判断›
- 27. 自定义线程池线程名,方便看日志›
- 28. CompletableFuture 入门:比 Future 好用在哪里›
- 29. runAsync 和 supplyAsync 的区别›
- 30. join:等待一个 CompletableFuture 完成›
- 31. allOf:等待一批异步任务全部完成›
- 32. CompletableFuture 使用自定义线程池›
- 33. thenApply、thenAccept、thenRun 到底有什么区别›
- 34. 带 Async 和不带 Async 的区别›
- 35. exceptionally、handle、whenComplete 的区别›
- 36. thenCombine:两个异步任务结果怎么合并›
- 37. thenCompose:一个异步任务依赖另一个异步任务›
- 38. anyOf:多个任务谁先完成就用谁›
- 39. orTimeout 和 completeOnTimeout:异步任务超时怎么处理›
- 40. CompletableFuture 批量处理 PDF 最终版›
- 41. Future、ThreadPoolExecutor、CompletableFuture 到底怎么选›
- 42. 线程池应该定义在哪里,为什么不能每次都 new›
- 43. Spring Boot 中把线程池定义成 Bean›
- 44. ThreadPoolTaskExecutor 和 @Async 的使用方法›
- 45. 为什么 @Async 同类调用会失效:Spring 代理机制›