java.util.concurrent 包

分类

数据结构:ConcurrentHashMap, BlockingQueue 系列
线程池:Executor, ExecutorService, ThreadPoolExecutor, ScheduledThreadPoolExecutor, Executors(工厂类), Callable, Runnable, Future
锁:ReentrantLock, ReentrantReadWriteLock, Condition
线程同步:CountDownLatch, CyclicBarrier

线程池饱和策略

ThreadPoolExecutor 的饱和策略通过调用 setRejectedExecutionHandler 来修改。不同的饱和策略如下。

  1. AbortPolicy: executor 抛出未检查 RejectedExecutionException,调用者捕获这个异常,然后自己编写能满足自己需求的处理代码。
  2. DiscardRunsPolicy: 遗弃最旧的,选择丢弃的任务,是本应接下来就执行的任务。
  3. DiscardPolicy: 遗弃会默认放弃最新提交的任务。
  4. CallerRunsPolicy: 调用者运行,既不会丢弃那个任务,也不会抛出任何异常,把任务推回到调用者那里,以此减缓新任务流。它不会在池线程中执行最新提交的任务,但它会在一个调用了execute() 的线程中执行。

Runnable 和 Callable 接口有什么不同

Callable 的 call() 方法可以返回值和抛出异常,而 Runnable的 run() 方法没有这些功能。Callable 可以返回装载有计算结果的 Future 对象

Java线程池中 submit() 和 execute() 方法有什么区别

两个方法都可以向线程池提交任务,execute() 方法的返回类型是 void,它定义在 Executor 接口中,而 submit() 方法可以返回持有计算结果的 Future 对象,它定义在 ExecutorService 接口中。

最后编辑于
©著作权归作者所有,转载或内容合作请联系作者
【社区内容提示】社区部分内容疑似由AI辅助生成,浏览时请结合常识与多方信息审慎甄别。
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

相关阅读更多精彩内容

友情链接更多精彩内容