zoukankan      html  css  js  c++  java
  • java基础

    interface可以多继承

    DTO中使用包装类 Integer,不要使用int, 防止set时出现NPE

    xx.setXAmount(jsonObject.getInteger("returncount"));

    使用spring mvc的异步线程 因为都会返回response,会调用Future对象的get方法,如果后台有sql异常是可以打印的.

    但是会有一些异步处理的场景,使用了CompleteFuture.supplyAsync()又没有调用get方法,会造成异常不打印。如果确定不调用Future.get,最好还是使用没有返回值的ExecutorService.execute(Runnable),而不是submit方法

     1 public class FutureUtilTest {
     2 
     3 
     4     public static void main(String[] args) {
     5         MyPool myPool = new MyPool(2, 4, 0, TimeUnit.DAYS, new ArrayBlockingQueue(5555));
     6         FutureAsyncUtil.setExecutor(myPool);
     7 
     8         CompletableFuture<Integer> supply = FutureAsyncUtil.supply(() -> {
     9             System.out.println(1111);
    10             if (1 == 1) {
    11                 throw new IllegalArgumentException("000");
    12             }
    13             return 1;
    14         });
    15         /*try {
    16             supply.get();//如果不get, 即使抛出异常,使用了afterExecute,也打印不出来
    17         } catch (InterruptedException e) {
    18             e.printStackTrace();
    19         } catch (ExecutionException e) {
    20             e.printStackTrace();
    21         }*/
    22 
    23         FutureAsyncUtil.execute(()->{
    24             System.out.println(3333);
    25             if (1 == 1) {
    26                 throw new IllegalArgumentException("3333");
    27             }
    28         });
    29         myPool.shutdown();//没有shutdown jvm不会退出
    30 
    31         System.out.println("END");
    32     }
    33 }
    34 
    35 
    36 class MyPool extends ThreadPoolExecutor {
    37 
    38     public MyPool(int corePoolSize, int maximumPoolSize, long keepAliveTime, TimeUnit unit, BlockingQueue<Runnable> workQueue) {
    39         super(corePoolSize, maximumPoolSize, keepAliveTime, unit, workQueue);
    40     }
    41 
    42     @Override
    43     protected void afterExecute(Runnable r, Throwable t) {
    44         super.afterExecute(r, t);
    45         if (t != null) {
    46             System.out.println("1111111" + t.getMessage());
    47         }
    48     }
    49 }
  • 相关阅读:
    第一节:SpringMVC概述
    SpringMVC【目录】
    Windows 系统快速查看文件MD5
    (error) ERR wrong number of arguments for 'hmset' command
    hive使用遇到的问题 cannot recognize input
    Overleaf支持的部分中文字体预览
    Understanding and Improving Fast Adversarial Training
    Django2实战示例 第十三章 上线
    Django2实战示例 第十二章 创建API
    Django2实战示例 第十一章 渲染和缓存课程内容
  • 原文地址:https://www.cnblogs.com/yszzu/p/9173807.html
Copyright © 2011-2022 走看看