摘要:
在Java SE 7 API中NIO相关库得到了扩充,新的NIO库被称为NIO 2.0,在这一版中Java提供了异步IO的能力,包括异步处理文件以及异步访问Socket数据。
异步的IO操作是IO模型的一种(关于IO模型,可以参考:[Java NIO预备知识:I/O底层原理与网络I/O模型](https://www.cnblogs.com/zjq-blog/p/15612494.html)),它采用的是一种“订阅-通知”模式。即应用程序线程向操作系统注册IO监听,当应用程序线程发出IO请求后便可以不在关心IO处理,内核进行系统调用,当数据准备好时进行接收数据,接收完毕后还会自行将数据写入用户地址空间。写入完毕之后由内核主动通知应用程序。因此,AIO是异步非阻塞的。 阅读全文
摘要:
Java 8提供了一种新的API来处理数据序列,在这个API中可以将数据想象成一股数据流,流过管道,而管道中则有各种的“筛网”来对流中每个流过的数据进行处理。这些筛网就是相关的方法,该API总体是一种声明式的编程,即只需在编写代码时告知你要干什么(你要使用什么“筛网”)而无需自己编写迭代器或循环代码去对每个元素进行判断/处理。同时由于Java 8引入了lambda表达式和方法引用,使得可以用函数式编程的模式去将方法作为参数以处理流中的元素。总的来说,流与lambda表达式/方法引用的配合可以使对元素序列的复杂操作简单化,就像编写SQL一样,在实现逻辑代码时,你只需要关心要做什么就可以。 阅读全文
摘要:
###6.Pipe Pipe是一个单向的管道,可以作为Java在JVM进程的线程间通讯的工具。在使用时,通信的线程共享一个Pipe,消息的发送方使用sink()方法获得一个通道,由这个通道写入数据。消息的接收方使用source()方法获得一个通道,然后又这个通道接收数据。 Pipe pipe = P 阅读全文