前往小程序,Get更优阅读体验!
立即前往
首页
学习
活动
专区
工具
TVP
发布
社区首页 >专栏 >并发知识6

并发知识6

作者头像
用户2436820
发布2018-09-05 10:28:10
2900
发布2018-09-05 10:28:10
举报
文章被收录于专栏:奔跑的蛙牛技术博客

对并发散列映射的批操作

javase8 为散列映射提供批操作,即使有其他线程在处理映射,这些操作也能安全的执行。 批操作会遍历映射, 处理遍历过程中找到的元素

3种操作

  • 搜索为每个键或值提供一个函数, 直到函数生成一个非 null 的结果。然后搜 索终止, 返回这个函数的结果。
  • 归约 组合所有键或值, 这里要使用所提供的一个累加函数
  • forEach 为所有键或值提供一个函数。

找出第一个出现次数超过1000的单词

代码语言:javascript
复制
 String result = map.search(threshold, (k, v) -> v > 1000 ? k : null);

使用foreach遍历

代码语言:javascript
复制
map. forEach ( threshold ,
(k, v) -> v > 1000 ? k + "> " + v : null,  // Filter and transformer 
System.out::println); // The nulls are not passed to the consumer

使用reduce累加

代码语言:javascript
复制
Long sum = map.reduceValues(threshold, Long::sum);

统计多少个条目的值大于1000

代码语言:javascript
复制
Long count = map.reduceValues(threshold, v -> v > 1000 ? 1L : null ,
Long: : sum) ;

并行数组算法

代码语言:javascript
复制
Arrays.parallelPrefix(values, (x, y) -> x * y)

执行器

构建新的线程有一定的代价,涉及到与操作系统的交互。如果程序中创建大量的生命很短的线程,建议使用线程池

线程池

使用线程池应该做的事

  1. 调用 Executors 类中静态的方法 newCachedThreadPool 或 newFixedThreadPool
  2. 调用 submit 提交 Runnable 或 Callable 对象
  3. 如果想要取消一个任务, 或如果提交 Callable 对象, 那就要保存好返回的 Future 对象。
  4. 当不再提交任何任务时, 调用 shutdown。

可完成future

可以利用CompletableFuture实现当某一事件发生后执行某个操作,也可以利用它来有顺序的做某件事

同步器

同步器.png

本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2018.08.06 ,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 对并发散列映射的批操作
  • 3种操作
  • 找出第一个出现次数超过1000的单词
  • 并行数组算法
  • 执行器
    • 线程池
    • 可完成future
    • 同步器
    领券
    问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档