“一切都是流”是一个经常被引用的RxJava的禅语。在第四章,我们学习了如何在我们的代码库的一些地方使用RxJava。但是你很快就会发现,真正的响应式应用程序是从上到下都使用了大量的流。这种方法简化了推理,使我们的应用程序非常一致。非阻塞应用程序往往为一小部分硬件提供出色的性能和吞吐量。通过限制线程的数量,我们能够充分利用CPU而不需要消费千兆字节大的内存。

Java可伸缩性的一个限制因素是I / O机制。java.io包设计得非常好,有许多小的Input / OutputStream 和 ReaderWriter实现,它们可以互相进行装饰和包装,同时增加一个功能。尽管我非常喜欢这个关注点的漂亮分离,但是Java中的标准I / O完全阻塞,意味着希望从套接字或文件中读取或写入的每个线程都必须无限期地等待结果。更糟糕的是,由于慢速网络或更慢的旋转磁盘,在I / O操作中卡住的线程很难被打断。阻塞本身不是一个问题,当一个线程被阻塞时,其他线程仍然可以与剩余的开放套接字进行交互。但是创建和管理线程很昂贵,在它们之间切换需要时间。Java应用程序完全能够处理数以万计的并发连接,但您必须仔细地设计它们。当RxJava与一些现代事件驱动的库和框架结合在一起时,这种设计工作就大大减少了。

results matching ""

    No results matching ""