FutureTask-callable

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"));

}

}

 

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值