比如一队人去厕所,只能一个一个轮流进。每个人进去酝酿时长是不一样的,即不定时长的延迟。
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 |
final List<People> list = new ArrayList<>(); list2.add(new People("威格灵")); list2.add(new People("李四")); list2.add(new People("王五")); list2.add(new People("赵六")); list2.add(new People("阮七")); Observable// .fromIterable(list)// .observeOn(Schedulers.newThread()) .map(// new Function<People, People>() { @Override public People apply(People people) throws Exception { long start = System.currentTimeMillis(); people.setStart(start); System.out.println(getCurrentYyMMddHHmmss() + ",人物:" + people.name + "," + Thread.currentThread().getName()); int delay = new Random().nextInt(20); return Observable.just(people) .delay(delay, TimeUnit.SECONDS) .blockingSingle(); } }) .subscribe(new Consumer<People>() { @Override public void accept(People people) throws Exception { System.out.println(getCurrentYyMMddHHmmss() + ",完成:" + people.name + ",耗时:" + (System.currentTimeMillis() - people.getStart()) + "毫秒"); } }); |
一次记录:
1 2 3 4 5 6 7 8 9 10 11 12 |
19-06-25_16:57:28,人物:威格灵,RxNewThreadScheduler-1 19-06-25_16:57:47,完成:威格灵,耗时:19023毫秒 19-06-25_16:57:47,人物:李四,RxNewThreadScheduler-1 19-06-25_16:57:53,完成:李四,耗时:6001毫秒 19-06-25_16:57:53,人物:王五,RxNewThreadScheduler-1 19-06-25_16:58:10,完成:王五,耗时:17002毫秒 19-06-25_16:58:10,人物:赵六,RxNewThreadScheduler-1 19-06-25_16:58:23,完成:赵六,耗时:13006毫秒 19-06-25_16:58:23,人物:阮七,RxNewThreadScheduler-1 19-06-25_16:58:33,完成:阮七,耗时:10005毫秒 |
end
声明
本文由崔维友 威格灵 cuiweiyou vigiles cuiweiyou 原创,转载请注明出处:http://www.gaohaiyan.com/2322.html
承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设