rxjava
红豆和绿豆
这个作者很懒,什么都没留下…
展开
-
Actor模型是解决高并发的终极解决方案
写在开始一般来说有两种策略用来在并发线程中进行通信:共享数据和消息传递。使用共享数据方式的并发编程面临的最大的一个问题就是数据条件竞争。处理各种锁的问题是让人十分头痛的一件事。传统多数流行的语言并发是基于多线程之间的共享内存,使用同步方法防止写争夺,Actors使用消息模型,每个Actor在同一时间处理最多一个消息,可以发送消息给其他Actor,保证了单独写原则。从而巧妙避免了多线程写争夺。和共享数据方式相比,消息传递机制最大的优点就是不会产生数据竞争状态。实现消息传递有两种常见的类型:基于chan转载 2021-06-01 09:37:22 · 601 阅读 · 0 评论 -
Actor模型及原理
1.Actor模型在使用Java进行并发编程时需要特别的关注锁和内存原子性等一系列线程问题,而Actor模型内部的状态由它自己维护即它内部数据只能由它自己修改(通过消息传递来进行状态修改),所以使用Actors模型进行并发编程可以很好地避免这些问题,Actor由状态(state)、行为(Behavior)和邮箱(mailBox)三部分组成状态(state):Actor中的状态指的是Actor对象的变量信息,状态由Actor自己管理,避免了并发环境下的锁和内存原子性等问题 行为(Behavior):转载 2021-06-01 09:34:21 · 1033 阅读 · 0 评论 -
Actor模型
推荐阅读Kotlin(十九)协程初探究<2>阅读109RocketMQ阅读278JMM详解阅读194JUC并发编程阅读397看这里,Android操作系统面试题,一文全解(吊打面试官系列)阅读462发布取消抽奖...原创 2021-06-01 09:32:58 · 233 阅读 · 0 评论 -
Projectreactor 与 rxjava
个人认为 android 开发使用RXjava 服务端开发使用projectreactor 语法基本一样,Spring5 集成了projectreactor 所以 从通用型的角度来看 projectreactor更通用一些rxjava运行在1.6projectreactor 运行在1.8 版本之上...原创 2021-02-22 23:00:55 · 499 阅读 · 0 评论 -
Rxjava 背压
(1)Rxjava的背压被观察者 可以发送多个数据,可以设置观察者发送数据的个数,如果超过被观察者设置的线程个数,则可以 使用不同的策略进行处理(2)背压的策略原创 2021-02-22 22:58:41 · 80 阅读 · 0 评论 -
Rxjava的线程调度器
package rxjava.scheduler;import io.reactivex.schedulers.Schedulers;public class SchedulerTest { public static void main(String[] args) { // Schedulers.computation() 用于cpu密集任务,不适合io操作 线程数量等于cpu数量 // Schedulers.io() 用于io密集性 提升阻塞io的异步性.原创 2021-02-22 22:58:20 · 240 阅读 · 0 评论 -
RxJava线程模型
ReactiveX是Reactive Extensions的缩写,一般简写为Rx,最初是LINQ的一个扩展,由微软的架构师Erik Meijer领导的团队开发,在2012年11月开源,Rx是一个编程模型,目标是提供一致的编程接口,帮助开发者更方便的处理异步数据流,Rx库支持.NET、JavaScript和C++,Rx近几年越来越流行了,现在已经支持几乎全部的流行编程语言了,Rx的大部分语言库由ReactiveX这个组织负责维护,比较流行的有RxJava/RxJS/Rx.NET,社区网站是reactivex.原创 2021-02-22 22:57:51 · 243 阅读 · 0 评论 -
RxJava 集合函数
(1)toList(2) toSortedList 对与集合排序(3)toMap 相同的key 只有一个值(4)toMutilMap 相同的key 多个value值(5) collectpackage rxjava.collection;import io.reactivex.Observable;public class RxJavaList { public static void main(String[] args) { Observa...原创 2021-02-22 22:54:49 · 106 阅读 · 0 评论 -
RxJava数学操作函数
1、count 统计数据流的数量,通过调用一次onComplete计算发送数量package rxjava.macth;import io.reactivex.Observable;public class RxJavaCount { public static void main(String[] args) { Observable.range(1,10).count().subscribe(System.out::println); }}10.原创 2021-02-22 22:54:06 · 145 阅读 · 0 评论 -
RxJava的条件和Boolean函数
1、all函数 所有数据项都满足这个函数package rxjava.condition;import io.reactivex.Observable;public class RxjavaAll { public static void main(String[] args) { Observable.range(1,10).all(x->x<100).subscribe(x->System.out.println(x)); ...原创 2021-02-21 22:31:07 · 200 阅读 · 0 评论 -
RxJava错误函数
1、catchpackage rxjava.exception;import io.reactivex.Observable;public class RxJavaCatch { public static void main(String[] args) { //catch 从Observable 中截取一个 OnError通知 并不通知给任何的观察者// Observable.create(e->{// ...原创 2021-02-21 21:58:39 · 78 阅读 · 0 评论 -
Rxjava 组合函数
组合基本函数 merge zip combineLatest join(1)merge函数 merge多个Observable 合并后数据时无序的package rxjava.merge;import io.reactivex.Observable;public class RxjavaMerge { public static void main(String[] args) { Observable<Integer> odd=Observable原创 2021-02-21 21:40:44 · 177 阅读 · 0 评论 -
Rxjava过滤函数
过滤的几个基本操作 filter disctinct first last take takeFirst takeLast skip SkipLast elementAt ingnoreEelements debounce(1)distinct 去除重复操作 去除重复操作,根据具体的值进行去除重复,如果是对象的化,则比较的是对象,则比较的是地址package rxjava.filter;import io.reactivex.Observable;import rxjava.map...原创 2021-02-21 20:56:50 · 290 阅读 · 0 评论 -
Rxjava转换函数
(1)map函数通过对每个项目应用函数来转换Observable发出的项目package rxjava.map;import io.reactivex.Observable;public class RxjavaMap { public static void main(String[] args) { Observable.range(1,5).map(m->{ return m*10; }).subsc.原创 2021-02-21 20:01:56 · 160 阅读 · 0 评论 -
RXjava创建函数
如何创建一个Observable 被观察者对象 一共有11个函数 create,just,from,defer,repeat ,interval,timer,range,empty,error,(1)create函数您可以使用Create运算符从头创建Observable。Observable 有 OnNext OnError OnComplete OnNext 可以发送多次,观察者执行多次。 OnComplete 只能发送一次 发送之后 在次发送 onNext 则不会生效OnError...原创 2021-02-21 16:34:09 · 175 阅读 · 0 评论 -
RXjava 基本模式
自测demo需要准备的pom文件<!-- https://mvnrepository.com/artifact/org.reactivestreams/reactive-streams --><dependency> <groupId>org.reactivestreams</groupId> <artifactId>reactive-streams</artifactId> <version>...原创 2021-02-21 14:15:47 · 246 阅读 · 0 评论 -
为什么需要响应式编程
一句话:提升线程的使用效率。 目前RXjava可以提升 线程的使用效率比如 一个主线程调用 业务a 3s,业务b 3s 串行调用 则需要6s的时间在多线程并发调用,二个线程分别执行 业务a 业务b 并发执行,则需要3s时间在并发调用过程中 执行时间缩短了3s,但是线程一直在等待 网络数据的返回,cpu使用率浪费了,线程资源也被浪费了因此可以使用响应式的编程,改造之后就是,多线程并发 调用业务a ,业务b 然后直接返回,线程资源释放。然后等着 业务a,业务b数据返回之后,应...原创 2021-02-21 13:29:55 · 392 阅读 · 0 评论