java8概述,java8多线程编程,Streams

《Java8实战》笔记

问题:为什么要多线程编程?

要了解多线程编程,先理解java8对硬件的影响:
Java 8对硬件的影响:平常我们用的CPU都是多核的——你的笔记本电脑或台式机上的处理器可能有四个CPU内核,甚至更多。但是,绝大多数现有的Java程序都只使用其中一个内核,其他三个都闲着,或只是用一小部分的处理能力来运行操作系统或杀毒程序。
上面这段话简单说就是,不用多线程编程,程序只会使用多核CPU的一个内核。只有使用多线程编程才能使用多个内核。
但是,多线程编程很难使用,从java1到现在,java一直在降低线程的使用难度
Java 1.0里有线程和锁,甚至有一个内存模型——这是当时的最佳做法,但事实证明,不具备专门知识的项目团队很难可靠地使用这些基本模型。
Java 5添加了工业级的构建模块,如线程池和并发集合。
Java 7添加了分支/合并(fork/join)框架,使得并行变得更实用,但仍然很困难。
Java 8对并行有了一个更简单的新思路,不过你仍要遵循一些规则,详细可以看《Java8实战》。

Streams

提到多线程编程,一般会想到synchronized,但是这个东西上手极难。
使用Streams可以避免使用synchronized
Java 8提供了一个新的API(称为“流”,Stream),它支持许多处理数据的并行操作,其思路和在数据库查询语言中的思路类似——用更高级的方式表达想要的东西,而由“实现”(在这里是Streams库)来选择最佳低级执行机制。这样就可以避免用synchronized编写代码,这一代码不仅容易出错,而且在多核CPU上执行所需的成本也比你想象的要高。
在Java 8中加入Streams可以看作把另外两项扩充加入Java 8的直接原因:把代码传递给方法的简洁方式(方法引用、Lambda)和接口中的默认方法。
Streams提供了一种新的方式,这种方式简洁地表达了行为参数化。比方说,你想要写两个只有几行代码不同的方法,那现在你只需要把不同的那部分代码作为参数传递进去就可以了
Java 8里面将代码传递给方法的功能(同时也能够返回代码并将其包含在数据结构中)还让我们能够使用一整套新技巧,通常称为函数式编程。
概括Streams是Java 8表示有序数据,并能灵活地表示这些数据是否可以并行处理的新方式。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值