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