zoukankan      html  css  js  c++  java
  • java接口请求超时处理方法

    //*********
             // 成员内部类
            class CallableThread implements Callable<Result> {
                @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<Result> callableThread=new CallableThread();
            FutureTask<Result> 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<Result>  call = new Callable<Result>(){
                public Result call() throws Exception{
                    //这个是一个耗时的网络 请求
                    Result r = HBaseUtil.getRow("grid_data", Bytes.toBytes(row_key));
                    return r;
                }
            };
            // Future是一个接口,该接口用来返回异步的结果
            Future<Result> 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 和 DynamoDB
    关于Mongodb的全面总结
    utf8mb4 使用注意
    mysql 事务隔离讲的比较好的文章收藏。
    [mysql] 常用命令总结
    [JTA] Java事务api
    [Hibernate] Hibernate 参数设置一览表(转)
    Spring配置sessionFactory的几种常用方式
    [前端] org.apache.jasper.JasperException 页面有空引用
    [Hibernate] JPA与Hibernate的优缺点
  • 原文地址:https://www.cnblogs.com/KdeS/p/12033472.html
Copyright © 2011-2022 走看看