Java 8 异步 API、循环、日期

Java 8 异步 API、循环、日期

  • 异步API
  • runAsync() 异步无参返回
@Test
public void asyncThread()throws Exception{
    CompletableFuture async1 = CompletableFuture.runAsync(()->{
        try {
            Thread.sleep(1000);
            System.out.println(Thread.currentThread().getName());
            System.out.println("none return Async");
        }catch (Exception e){
            e.printStackTrace();
        }
    });
    // 调用get()将等待异步逻辑处理完成
    async1.get();
}
  • supplyAsync() 异步有参返回
@Test
public void asyncThread2()throws Exception{
    CompletableFuture<String> async2 = CompletableFuture.supplyAsync(()->{
        return "hello";
    });
    String result = async2.get();
    // String result2 = async2.get(5L, TimeUnit.SECONDS);
    System.out.println(result);
}
  • 循环ForEach
    forEach对List的循环
@Test
public void listForeach(){
    List<String> lst = new ArrayList<String>(5){{
        add("A");
        add("B");
        add("H");
        add("O");
        add("M");
    }};
    lst.forEach(System.out::println);
    lst.forEach((item)-> System.out.println(item.concat("_")));
}

forEach对数组的循环

@Test
public void arrForeach(){
    String[] strArr = new String[]{"A","B","C","D"};

    Arrays.stream(strArr).forEach(System.out::println);
}

forEach对Map的循环

@Test
public void mapForeach(){
    Map<String,Object> mps = new HashMap<String,Object>(5){{
        put("a",1);
        put("b",true);
        put("c",23.44F);
        put("d","hello");
        put("e",11L);
    }};
    mps.forEach((k,v)-> System.out.println(k.concat(":").concat(String.valueOf(v))));
    String str = "hello";
}
  • 新的时间类(LocalDate、LocalDateTime)
    格式化及区域定义
/**设置格式化模板**/
private static final DateTimeFormatter DATE_TIME_FORMATTER = DateTimeFormatter.ofPattern("yyyy-MM-dd HH:mm:ss.SSSS");

/**设置日期时区常量**/
public static final ZoneId CHINA_ZONE_ID = ZoneId.systemDefault();

Date格式化为DateTime

/**Date格式化为DateTime**/
@Test
public void dateToDateTime(){
    Date date = new Date();
    LocalDateTime dateTime = date.toInstant().atZone(CHINA_ZONE_ID).toLocalDateTime();
    System.out.println(dateTime);
}

LocalDate/LocalDateTime转Date

/**LocalDate/LocalDateTime转Date**/
@Test
public void toDate(){
  // LocalDate
  LocalDate localDate = LocalDate.now();
  Date d1 = Date.from(localDate.atStartOfDay(CHINA_ZONE_ID).toInstant());
  System.out.println(d1);

  // LocalDateTime
  LocalDateTime localDateTime = LocalDateTime.now();
  Date d2 = Date.from(localDateTime.atZone(CHINA_ZONE_ID).toInstant());
  System.out.println(d2);
}

日期加减

/**日期加减**/
@Test
public void plusDay(){
    LocalDateTime dateTime = LocalDateTime.now(CHINA_ZONE_ID);
    //天
    dateTime=dateTime.plusDays(1);
    //时
    dateTime=dateTime.plusHours(-1);
    //分钟
    dateTime=dateTime.plusMinutes(30);
    System.out.println(dateTime.format(DATE_TIME_FORMATTER));
}
  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值