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


版权声明:本文为weixin_42299257原创文章,遵循CC 4.0 BY-SA版权协议,转载请附上原文出处链接和本声明。