场景:有10个人,给每人分配3个任务(砍树、打游戏、修自行车),任务是不能同时进行的。
要求:10个人同时开始执行任务,所有人都把3个任务完成后汇总结果。
分析:10个人的行为是异步的,理解为10个线程同时启动进行;每个人的任务是同步的,执行完一个才能进行下一个。
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 33 34 35 36 |
List<Person> personList; List<Task>taskList; Observable// .fromIterable(personList)// 人员遍历 .flatMap(new Function<Person, ObservableSource<String>>() { // flatMap异步的 @Override public ObservableSource<String> apply(final Person person) throws Exception { Observable<String> map = Observable// .fromIterable(taskList)// 任务遍历 .observeOn(Schedulers.newThread())// 新线程 .map(new Function<Task, String>() { // map同步的 @Override public String apply(Task task) throws Exception { return execPersonDoTask(person, task); } }); return map; } })// .toList()// .toObservable()// .subscribe(new Consumer<List<String>>() { @Override public void accept(List<String> modelList) { System.out.println("全部person执行task完毕:" + modelList.toString()); } }, new Consumer<Throwable>() { @Override public void accept(Throwable throwable) throws Exception { System.out.println("失败:" + throwable.getMessage()); } }); |
end
声明
本文由崔维友 威格灵 cuiweiyou vigiles cuiweiyou 原创,转载请注明出处:http://www.gaohaiyan.com/2290.html
承接App定制、企业web站点、办公系统软件 设计开发,外包项目,毕设