package org.boot.consumer.service;
import java.util.concurrent.Callable;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;
import java.util.concurrent.FutureTask;
import org.boot.outer.dto.UserDto;
import com.alibaba.dubbo.common.json.JSONObject;
public class UserInfoTask {
public static void main(String[] args) {
try {
// 通知三次 tpa 每个10秒
Callable<String> notifyTpaCallable = new Callable<String>() {
@Override
public String call() throws Exception {
if ("000".equals("")) {
System.out.println("预约订单撤销通知tpa(产品状态撤销推送平安付)成功!");
return "000";
} else {
System.out.println("预约订单撤销通知tpa(产品状态撤销推送平安付)失败!");
}
return "999";
}
};
ExecutorService threadPool = Executors.newFixedThreadPool(1);
for (int i = 0; i < 3; i++) {
FutureTask<String> notifyTPAFutureTask = new FutureTask<>(notifyTpaCallable);
threadPool.submit(notifyTPAFutureTask);
if ("000".equals(notifyTPAFutureTask.get())) {
break;
} else {
notifyTPAFutureTask.cancel(true);
}
Thread.sleep(3000l);
}
threadPool.shutdown();
} catch (InterruptedException e) {
e.printStackTrace();
} catch (ExecutionException e) {
e.printStackTrace();
}
}
private static void khasda() throws InterruptedException, ExecutionException {
Callable<JSONObject> userInfoCallable = new Callable<JSONObject>() {
@Override
public JSONObject call() throws Exception {
System.out.println("女神到了吗?");
UserDto userDto = new UserDto();
userDto.setAddress("我住在上海");
userDto.setId(100012l);
userDto.setUserName("张爆爆");
JSONObject jsonObject = new JSONObject();
jsonObject.put("beautiful", userDto);
jsonObject.put("userName", userDto.getUserName());
return jsonObject;
}
};
Callable<JSONObject> orderCallable = new Callable<JSONObject>() {
@Override
public JSONObject call() throws Exception {
System.out.println("我给女神买了件礼物。");
JSONObject jsonObject = new JSONObject();
jsonObject.put("result", "我收到了你的礼物很高兴。");
return jsonObject;
}
};
FutureTask<JSONObject> userInfoFutureTask = new FutureTask<>(userInfoCallable);
FutureTask<JSONObject> orderFutureTask = new FutureTask<>(orderCallable);
new Thread(userInfoFutureTask).start();
new Thread(orderFutureTask).start();
System.err.println("女神还没来!");
JSONObject json = userInfoFutureTask.get();
JSONObject rest = orderFutureTask.get();
System.out.println("我终于等到了女神 " + json.get("userName") + " 的回复她说:" + rest.get("result"));
}
}