找到 2637 篇文章 关于 Java
580 次浏览
Java 9 在 java.util.concurrent.Flow 包下引入了 Reactive Streams,它支持一个可互操作的发布-订阅框架。它处理跨异步边界的异步数据流(将元素传递到另一个线程或线程池),接收方无需缓冲任意数量的数据,从而避免缓冲区溢出。Flow API 包含四个相互关联的核心接口:Publisher、Subscriber、Subscription 和 Processor。语法@FunctionalInterface public static interface Publisher { public void subscribe(Subscriber
700 次浏览
在 Java 9 中,Process API 用于控制和管理操作系统进程。ProcessHandle 类提供了进程的原生进程 ID、启动时间、累积 CPU 时间、参数、命令、用户、父进程和子进程。它还提供了一个方法来检查进程的存活性并销毁进程。我们可以使用 allProcesses() 方法以流的形式检索所有 ProcessHandle 数据。在下面的示例中,我们检索所有进程的信息。示例import java.util.stream.Stream; import java.util.Optional; import java.util.stream.Stream; public class AllProcessesTest { public static void main(String args[]) throws InterruptedException { System.out.println("---------------------------"); System.out.println("所有进程:"); Stream processStream = ProcessHandle.allProcesses(); processStream.forEach(process -> ... 阅读更多
1K+ 次浏览
Java 9 中引入了进程处理类和相关 API。我们可以使用 ProcessHandle 接口和相关方法获取 pid 和其他相关进程的信息。我们需要获取进程的所有子进程,然后使用 java.lang.ProcessHandle.children() 方法。此方法返回一个流,通常是没有任何子进程的进程。在下面的示例中,我们可以获取第一个进程并检索其子进程的信息。示例import java.util.stream.Stream; import java.util.Optional; public class ChilderenProcessTest { public static void main(String args[]) throws InterruptedException { System.out.println("---------------------------"); System.out.println("子进程:"); Optional processHandle = ... 阅读更多
1K+ 次浏览
在 Java 9 中,Process API 支持一种简单的方法来获取有关进程的大量信息。ProcessHandle 接口可以识别并提供对原生进程的控制,以及检查进程存活性并销毁进程的方法,而 ProcessHandle.Info 接口可以提供进程的信息快照。我们需要使用 ProcessHandle 接口的 destroy() 方法来销毁进程。在下面的示例中,我们需要使用 ProcessHandle 接口来终止进程。示例import java.io.File; import java.io.IOException; import java.util.Objects; public class DestroyProcessTest { public static void main(String[] args) throws InterruptedException { System.out.println("---------------------------"); ... 阅读更多
163 次浏览
在 Java 9 中,引入了 ofInstant() 方法用于转换。它是 LocalDate、LocalTime 和 LocalDateTime 类的静态方法。此方法将 java.time.Instant 对象转换为 LocalDate,这需要以 java.time.ZoneId 的形式提供时区。语法public static LocalTime ofInstant(Instant instant, ZoneId zone) public static LocalDate ofInstant(Instant instant, ZoneId zone) public static LocalDateTime ofInstant(Instant instant, ZoneId zone)示例import java.time.LocalDate; import java.time.LocalTime; import java.time.LocalDateTime; import java.time.Instant; import java.time.ZoneId; public class OfInstantMethodTest { public static void main(String args[]) { Instant instant = Instant.parse("2020-02-05T02:35:15.245Z"); System.out.println("Instant: " + instant); ... 阅读更多
700 次浏览
在 Java 9 中,LocalDate 类提供 toEpochSecond() 方法将本地日期转换为纪元秒。toEpochSecond() 方法将 LocalDate 转换为自纪元 1970-01-01T00:00:00Z 以来经过的秒数。LocalDate 可以与给定的时间和时区偏移量结合起来计算从 1970-01-01T00:00:00Z 开始的秒数。语法public long toEpochSecond(LocalTime time, ZoneOffset offset)示例import java.time.LocalDate; import java.time.LocalTime; import java.time.ZoneOffset; public class ToEpochSecondMethodTest { public static void main(String args[]) { LocalDate date = LocalDate.now(); LocalTime time = LocalTime.now(); System.out.println("LocalDate toEpochSecond : " + date.toEpochSecond(time, ZoneOffset.of("Z"))); ... 阅读更多
100 次浏览
Java 9 中的国际化增强功能包括 Unicode 8.0、UTF-8 属性文件以及默认启用 CLDR 地区设置数据。Java 9 支持高达 Unicode 8.0 标准,包含 10,555 个字符、29 个脚本和 42 个区块。在 Java 9 中,属性文件以 UTF-8 编码加载。默认情况下,读取输入流会抛出 MalformedInputException 或 UnmappableCharacterException。在这种情况下,PropertyResourceBundle 实例重置到异常之前的状态,以 ISO-8859-1 重新读取输入流,并继续读取。如果 PropertyResourceBundle.encoding 设置为 ISO-8859-1 或 UTF-8,则 PropertyResourceBundle 实例以该编码读取输入流,并在遇到无效序列时抛出异常。系统属性读取 ... 阅读更多
190 次浏览
Java 9 引入了 StackWalker API 作为 Thread.getStackTrace() 或 Throwable.getStackTrace() 以及 SecurityManager.getClassContext() 的替代方案。此 API 针对一种遍历和具体化所需堆栈帧的机制,允许在需要时有效地延迟访问其他堆栈帧。如果我们需要访问异常堆栈跟踪的每个堆栈元素,则可以使用 Throwable 类的 getStackTrace() 方法。它返回一个 StackTraceElement 数组。示例import java.util.*; // Test1 类 class Test1 { public void test() throws Exception { Test2 test2 = new Test2(); test2.test(); } } // Test2 类 class Test2 { public void test() ... 阅读更多
353 次浏览
在 Java 9 中,Collectors 类添加了一个新方法:flatMapping()。它类似于 Collectors.mapping() 方法,其中 flatMapping() 方法允许我们处理嵌套集合。Collectors.flatMapping() 方法接受一个应用于输入元素的函数和一个收集器来累积通过该函数传递的元素。与 Collectors.mapping() 方法不同,Collectors.flatMapping() 方法处理元素流,使我们能够摆脱不必要的中间集合。语法public static Collector flatMapping(Function
306 次浏览
Collectors 类是 Stream API 的重要组成部分。在 Java 9 中,Collectors 类添加了一个新方法:filtering()。Collectors.filtering() 方法可用于过滤流中的元素。它类似于流上的 filter() 方法。filter() 方法在元素分组之前处理值,而 filtering() 方法可以很好地与 Collectors.groupingBy() 方法一起使用,以便在过滤步骤发生之前对值进行分组。语法public static Collector filtering(Predicate