调度程序是有关处理单元的RxJava抽象。调度程序可以由Executor服务支持,但是您可以实现自己的调度程序实现。
AScheduler应该满足此要求:
应该顺序处理未延迟的任务(FIFO顺序)
任务可以延迟
Scheduler可以在某些运算符(例如:)中将A用作参数delay,或与subscribeOn/observeOn方法一起使用。
对于某些运算符,Scheduler将使用来处理特定运算符的任务。例如,delay将安排一个延迟任务,该任务将发出下一个值。这Scheduler将保留并在以后执行。
该subscribeOn可每使用一次Observable。它将定义Scheduler订阅的代码将在其中执行。
每个observeOn可以多次使用Observable。这将限定其中Scheduler将用于执行所定义的所有的任务之后的observeOn方法。observeOn将帮助您执行线程跳跃。
在特定的调度程序上
// 该lambda将在Schedulers.io()中执行 Observable.fromCallable(() -> Thread.currentThread().getName()) .subscribeOn(Schedulers.io()) .subscribe(System.out::println);
使用特定的Scheduler进行observeOn
Observable.fromCallable(() -> "Thread -> " + Thread.currentThread().getName()) // 下一个任务将在io调度程序中执行 .observeOn(Schedulers.io()) .map(str -> str + " -> " + Thread.currentThread().getName()) // 下一个任务将在计算调度程序中执行 .observeOn(Schedulers.computation()) .map(str -> str + " -> " + Thread.currentThread().getName()) // 下一个任务将在io调度程序中执行 .observeOn(Schedulers.newThread()) .subscribe(str -> System.out.println(str + " -> " + Thread.currentThread().getName()));
用运算符指定特定的调度程序
一些运算符可以将Scheduleras作为参数。
Observable.just(1) // 延迟运算符的onNext方法将在新线程中执行 .delay(1, TimeUnit.SECONDS, Schedulers.newThread()) .subscribe(System.out::println);
发布给订阅者:
TestScheduler testScheduler = Schedulers.test(); EventBus sut = new DefaultEventBus(testScheduler); TestSubscriber<Event> subscriber = new TestSubscriber<Event>(); sut.get().subscribe(subscriber); sut.publish(event); testScheduler.advanceTimeBy(1, TimeUnit.SECONDS);
线程池:
this.poolName = schedulerFig.getIoSchedulerName(); final int poolSize = schedulerFig.getMaxIoThreads(); final BlockingQueue<Runnable> queue = new ArrayBlockingQueue<Runnable>(poolSize); final MaxSizeThreadPool threadPool = new MaxSizeThreadPool( queue, poolSize ); this.scheduler = Schedulers.from(threadPool);
Web套接字可观察:
final Subscription subscribe = socket.webSocketObservable() .subscribeOn(Schedulers.io()) .doOnNext(new Action1<RxEvent>() { @Override public void call(RxEvent rxEvent) { System.out.println("Event: " + rxEvent); } }) .subscribe();
本文向大家介绍rx-java 基础科目,包括了rx-java 基础科目的使用技巧和注意事项,需要的朋友参考一下 示例 SubjectRxJava中的A是既是Observable和又是的类Observer。这基本上意味着它可以充当Observable和将输入传递给订阅者,以及Observer从另一个Observable获取输入。 上面打印了“你好,世界!” 使用进行控制台Subjects。 说明 代
本文向大家介绍tensorflow 基本范例,包括了tensorflow 基本范例的使用技巧和注意事项,需要的朋友参考一下 示例 Tensorflow不仅仅是一个深度学习框架。它是一种通用计算框架,用于以并行和分布式方式执行通用数学运算。下面描述这样的示例。 线性回归 常用的并且易于计算的基本统计示例是将一条线拟合到数据集。在tensorflow中执行此操作的方法在下面的代码和注释中进行了描述。
本文向大家介绍Laravel 基本范例,包括了Laravel 基本范例的使用技巧和注意事项,需要的朋友参考一下 示例 您可以使用validate方法(由ValidatesRequeststrait提供的基本Controller中提供)来验证请求数据。 如果规则通过,您的代码将继续正常执行;但是,如果验证失败,包含验证错误的错误响应将自动发送回: 对于典型的HTML表单请求,用户将被重定向到上一页,
本文向大家介绍rx-java PublishSubject,包括了rx-java PublishSubject的使用技巧和注意事项,需要的朋友参考一下 示例 PublishSubject只向观察者发送那些在订阅时间之后由源Observable发出的对象。 一个简单的PublishSubject例子: 输出: 在上面的示例中,aPublishSubject订阅了一个Observable类似于时钟的,
本文向大家介绍rx-java 介绍,包括了rx-java 介绍的使用技巧和注意事项,需要的朋友参考一下 示例 背压是在Observable处理管道中时,某些异步阶段无法足够快地处理值,因此需要一种方法来告诉上游生产者放慢速度。 需要背压的经典情况是生产者是热源时: 在此示例中,主线程将向在后台线程上对其进行处理的最终消费者生产100万件商品。该方法可能会compute(int)花费一些时间,但Ob
rx 是一个可扩展的、现代的、极简主义的像素编辑器 ,在 rust 中实现。rx 是免费软件,在 GPLv3 下获得许可。 特性 内置精灵动画支持,带实时预览。 同时处理多个文件。 可扩展的命令系统。 可使用简单的基于文本的语言进行配置。 支持 HiDPI。 用户界面缩放。 撤消/重做任何编辑。 动画 GIF 输出。 多刷/同步编辑。 画笔过滤,又名“像素完美”模式。 像素操作的视觉模式。 安