java接口超时设置_java接口请求超时处理方法

//*********

// 成员内部类

class CallableThread implements Callable {

@Override

public Result call() {

try {

// 假设这个是一个耗时的网络 请求

Result r = HBaseUtil.getRow("grid_data", Bytes.toBytes(row_key));

return r;

} catch (Exception e) {

// 假装记录一下日志

e.printStackTrace();

return null;

}

}

}

Callable callableThread=new CallableThread();

FutureTask task= new FutureTask<>(callableThread);

// 开启线程

new Thread(task).start();

Result r;

try {

// 如果3秒没有返回值就 抛出异常

r = task.get(3000, TimeUnit.MILLISECONDS);

} catch (Exception e) {

r=null;

}

// 结束事件

//***********

方式二:

//*********

final ExecutorService exec = Executors.newSingleThreadExecutor();

Callable call = new Callable(){

public Result call() throws Exception{

//这个是一个耗时的网络 请求

Result r = HBaseUtil.getRow("grid_data", Bytes.toBytes(row_key));

return r;

}

};

// Future是一个接口,该接口用来返回异步的结果

Future future = exec.submit(call);

Result r = null;

try{

// 同步结果,并且设置超时时间

r = future.get(1000 * 1,TimeUnit.MILLISECONDS);

}catch(InterruptedException e){

e.printStackTrace();

} catch (ExecutionException e) {

e.printStackTrace();

} catch (TimeoutException e) {

e.printStackTrace();

}

//执行结束后,手动关闭线程池

exec.shutdown();

//***********

标签:java,接口,Callable,printStackTrace,call,Result,catch,new,超时

来源: https://www.cnblogs.com/KdeS/p/12033472.html

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值