首页 > 编程语言 >Java 9 新特性

Java 9 新特性

时间:2023-08-09 15:12:09浏览次数:44  
标签:procInfo 特性 ProcessHandle 模块 Java Optional HttpClient

Java 9 新特性

模块化系统

Java 9 引入模块化系统的一个原因是为了让 Java 可以运行在内存有限的场景
模块可以导出 Public API 隐藏内部实现,模块可以依赖其它模块

module tech.ruanjiang.modules.car {
    requires tech.ruanjiang.modules.engines;
    exports tech.ruanjiang.modules.car.handling;
}

在模块的根目录用 module-info.java 来描述模块的导出 API 和 对其它模块的依赖

Http Client

Java 9 引入了 java.net.http.HttpClient 实现了 HTTP/2 和 WebSocket 协议,性能应该可以和 Apache HttpClient, Netty 和 Jetty 相当

@Test
public void testGet() throws IOException, InterruptedException {
    HttpClient httpClient = HttpClient.newBuilder()
            .version(HttpClient.Version.HTTP_2)
            .connectTimeout(Duration.ofSeconds(20))
            .build();
    HttpRequest httpRequest = HttpRequest.newBuilder()
            .GET()
            .uri(URI.create("https://www.baidu.com"))
            .build();
    HttpResponse<String> httpResponse = httpClient.send(httpRequest,HttpResponse.BodyHandlers.ofString());
    Assert.assertTrue(httpResponse.statusCode() == 200 && httpResponsebody().contains("关于百度"));
}

Process API

Process API 优化了对系统进程的控制和管理
java.lang 包中 ProcessHandle.current() 获取当前进程,然后可以获得 pid 和其它信息

ProcessHandle self = ProcessHandle.current();
long PID = self.getPid();
ProcessHandle.Info procInfo = self.info();
 
Optional<String[]> args = procInfo.arguments();
Optional<String> cmd =  procInfo.commandLine();
Optional<Instant> startTime = procInfo.startInstant();
Optional<Duration> cpuUsage = procInfo.totalCpuDuration();

ProcessHandle 的 destroy 方法用来退出进程

interface 私有方法

接口允许私有方法,主要用来辅助实现默认方法的

标签:procInfo,特性,ProcessHandle,模块,Java,Optional,HttpClient
From: https://www.cnblogs.com/goallin/p/17616893.html

相关文章

  • Java学习之进制之间的转换
    importjava.util.*;publicclassJinzhi{publicstaticvoidmain(String[]args){/***总结:*二进制转换八进制:每三位转换*二进制转换十六进制:每四位转换*十进制转二进制:除以2取余数,得到的余数进行倒叙展示......
  • excel wps宏编辑器,用JavaScript自定义函数设置单元格符合条件后,那一行都变色
        functionjudge(){varapp=Application;//WPS表格的应用程序对象varwb=app.ActiveWorkbook;//当前工作簿varsheet=wb.ActiveSheet;//当前工作表vardataRange=sheet.UsedRange;//使用的数据范围varnumRows=dataRange.Rows......
  • 【javascript】关于 AbortController
    相关概念:https://developer.mozilla.org/zh-CN/docs/Web/API/AbortController需求描述:后台返回10000条图片url,前端拿到后需要做成假分页,假设1页显示20张图,分成50页。部分逻辑:1for(leti=0;i<imgUrlList.length;i++){2letimage=newImage()3image.src=imgUrlLi......
  • java-vector-tile | 使用java生成Mapbox矢量图块规范的矢量图块
    https://github.com/ElectronicChartCentre/java-vector-tile/tree/master/src/main/java/no/ecc/vectortile使用java生成mapbox-gl可读的vectortile......
  • CefSharp (铬) javascript增加内存限制
    https://stackoverflow.com/questions/55099372 好了,伙计们,我已经想出了一个解决方案。当您将这些参数传递给chrome可执行文件以将javascript内存限制设置为16it时,chrome会将其设置为3.5it。--js-flags="--max_old_space_size=16384"复制似乎将内存大小设置为3.5GB以上......
  • Java Map初始化赋值 Map初始化和Map赋值
    JavaMap初始化赋值原文链接:https://www.python100.com/html/105098.html一、Map初始化Map是Java中的一种数据结构,用于存储键值对。初始化Map有两种主要方法。第一种方法使用put方法手动为Map添加键值对;第二种方法使用静态代码块初始化Map。1.put方法手动添加键值对put方法......
  • TimeId 基于时间戳的自增ID算法(Java版)
    常用的全局唯一ID算法1、UUID首先是大名鼎鼎的UUID,UUID是通用唯一识别码(UniversallyUniqueIdentifier)的缩写。UUID是一个128比特的数值,是基于当前时间、计数器(counter)和硬件标识(通常为无线网卡的MAC地址)等数据计算生成的。虽然UUID碰撞几率不为零,但它足够接近于零,可以忽......
  • vue import 调用方法 Import是javascript中的一种模块加载方式,在Vue中也可以使用impor
    vueimport调用方法Import是javascript中的一种模块加载方式,在Vue中也可以使用import来加载组件、库或其他模块。使用import语句,可以将需要的模块导入到当前模块的作用域中,以使其可用于当前模块内的执行。原文链接:https://www.yzktw.com.cn/post/1248672.htmlImport是javascri......
  • java笔记_12_自定义注解
    1、@interface用于声明注解,参数只用八种基本数据类型和四种数据类型(基本类型byte,short,char,int,long,float,double,boolean八种基本数据类型和String,Enum,Class,annotations),如果只有一个参数成员,最好把参数名称设为"value"2、@Target说明了Annotation所修饰的对象范围,......
  • java XSSFWorkbook excel 公式计算
    excel公式计算//创建一个工作薄XSSFWorkbookworkbook=newXSSFWorkbook();//如果是最后一列添加一个求和计算,将结果放到同一列最后一个。dataLists数据列表XSSFSheetsheet=workbook.getSheet(replaceSpecStr(sheetNames.get(0)));Rowrow......