当前位置: 首页 > news >正文

网站下方链接图标怎么做广州模板网站建设价格

网站下方链接图标怎么做,广州模板网站建设价格,水墨背景风格企业网站模板,全国高校教师网络培训中心还在用 for 循环计算两个数之间所有数的和吗?下面提供两种新方法! 1. ForkJoin 1.1 背景 要知道,在一个方法中,如果没有做特殊的处理,那么在方法开始到结束使用的都是同一个线程,无论你的业务有多复杂 那…

还在用 for 循环计算两个数之间所有数的和吗?下面提供两种新方法!

1. ForkJoin

1.1 背景

要知道,在一个方法中,如果没有做特殊的处理,那么在方法开始到结束使用的都是同一个线程,无论你的业务有多复杂
那么就有人在想,能不能在一个方法里使用多个线程来完成一个复杂的业务?

ForkJoin 拆分合并
在一定程度上满足了上述的场景,使用 ForkJoin 后,可以根据自己的需要将一个任务拆分为多个任务;当多个任务都执行完后,再将结果汇总返回

1.2 实例

比如:我现在要计算 1~1000000000 之间所有数的和

继承 RecursiveTask 并行任务类,编写对应的计算方法

public class ForkJoinDemo extends RecursiveTask<Long> {private Long start;private Long end;private Long temp = 1000L; // 临界值public ForkJoinDemo(Long start, Long end) {this.start = start;this.end = end;}@Overrideprotected Long compute() {if ((end - start) < temp) {// 数据量不大就不必拆分任务Long sum = 0L;for (Long i = start; i <= end; i++) {sum += i;}return sum;} else {long middle = (start + end) >>> 1; // 中间值ForkJoinDemo task1 = new ForkJoinDemo(start, middle);task1.fork(); // 拆分任务,把任务压入队列ForkJoinDemo task2 = new ForkJoinDemo(middle+1, end);task2.fork(); // 拆分任务,把任务压入队列// 合并结果return task1.join() + task2.join();}}
}

编写测试类调用上面的方法

public class DemoTest01 {public static void main(String[] args) throws Exception {ForkJoinPool forkJoinPool = new ForkJoinPool();ForkJoinTask<Long> task = new ForkJoinDemo(0L, 10_0000_0000L);ForkJoinTask<Long> submit = forkJoinPool.submit(task);Long sum = submit.get();System.out.println("sum = " + sum);}
}

1.3 注意点

细心的人应该会看到,本人在计算中间值时,使用了位运算
并不是因为显得很厉害,而是因为之前踩过坑

细想,如果是 int 类型的话,(start + end) / 2 ;乍一眼看上去好像没什么问题
但我们都知道 int 的最大值是 2147483647。如果 start = 2147483645,end = 2147483645,虽然 start 和 end 都没有超出最大值,但是如果加起来的话就会造成溢出,从而导致中间值计算错误

所以也是提醒大家,越是简单的问题越容易被忽略

2. Stream 并行流

如何使用 Stream 并行流实现计算 1~1000000000 之间所有数的和
一行代码解决!

public class DemoTest01 {public static void main(String[] args) throws Exception {// rangeClosed 前开后闭 (]long sum = LongStream.rangeClosed(0L, 10_0000_0000L).parallel().reduce(0, Long::sum);System.out.println("sum = " + sum);}
}
http://www.yayakq.cn/news/83690/

相关文章:

  • 自建服务器做网站要备案零基础网站开发设计
  • 国外哪些网站有黄图wordpress 返回顶部代码
  • 河南省财政厅经济建设网站重庆网站建设合肥公司
  • 建设网站公开教学视频下载空调设备公司网站建设
  • ps做字幕模板下载网站有哪些网站设计平台 动易
  • 关于做网站的调查问卷赞助网站怎么做
  • 网络公司网站建设方案书电子商务主要学什么课程
  • 凡科做网站是否安全网站开发怎么做
  • 世界电商网站排名做网站百度百科
  • 网站建设模板 源码 特效PHP工具箱和WordPress
  • 北京专业做网站电话网站什么意思
  • 郑州建设公司网站软件设计大赛
  • 做网站图片大会导致慢企业网站的基本功能有哪些
  • 免费做爰网站网页设计添加图片插件
  • 网站推广行业赚钱吗个人网站盈利
  • 网站做多个单页链接东营建设信息网中标公示
  • 建设网站虚拟现实技术seo快速优化方法
  • 网站后台管理系统如何使用广东省农业农村厅副厅长
  • 在网站后台管理系统里产品说明怎么添加图片龙口城乡建设局官方网站
  • 网站论文首页布局技巧怎么查看网站提交百度的度
  • 河北企业网站建设技术网站首页收录没了
  • 做哪个网站零售最好用织梦系统做网站产权
  • 恶意网站怎么办微网站无锡
  • 太原网站建设工作室实体店线上线下运营模式
  • 县级网站建设wordpress建站多个域名
  • 张家界酷网科技网站建设安徽省在建项目查询
  • 专注网站搭建的公司mip网站有什么好处
  • 网站建设费用初步预算相城专业的网站建设
  • 做兼职上什么网站网站创建器
  • 网站建设宣传视频刚建设的网站如何推广