将一个简单远程调用的方式例子改为异步调用
第一版:https://www.cnblogs.com/nxzblogs/p/12766025.html
第二版:使用RxJava :(RxJava:https://github.com/ReactiveX/RxJava)
package com.xsxy.asynctest.test04;
import io.reactivex.Flowable;
import io.reactivex.schedulers.Schedulers;
import java.util.ArrayList;
import java.util.List;
import java.util.Map;
import java.util.concurrent.LinkedBlockingQueue;
import java.util.concurrent.ThreadPoolExecutor;
import java.util.concurrent.TimeUnit;
/**
* 广播调用RPC
*/
public class Test02RxJavaAsyncRpcCallTest {
public static final int AVAILABLE_PROCESSORS = Runtime.getRuntime().availableProcessors();
public static ThreadPoolExecutor BIZ_EXECUTOR = new ThreadPoolExecutor(AVAILABLE_PROCESSORS, AVAILABLE_PROCESSORS, 10, TimeUnit.SECONDS,
new LinkedBlockingQueue<>(10), new ThreadPoolExecutor.CallerRunsPolicy());
public static void main(String[] args) throws InterruptedException {
// rxJavaRpcCall();
// aSyncRxJavaRpcCall();
// aSyncRpcCall2();
aSync();
// aSyncUserBizExecutor();
}
/**
* rxjava 同步执行
* 消耗时间大概为20s,因为rpcCall方法是同步调用的,调用线程就是main线程
*/
public static void rxJavaRpcCall() {
long start = System.currentTimeMillis();
Flowable.fromArray(genIpList().toArray(new S