java.util.concurrent 包

作者: riveraiyanzi | 来源:发表于2017-07-16 02:02 被阅读94次

分类

数据结构: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 接口中。

相关文章

网友评论

    本文标题: java.util.concurrent 包

    本文链接:https://www.haomeiwen.com/subject/wrftkxtx.html