找到 2637 篇文章 关于 Java

Java 9 中 Reactive Streams 的核心接口是什么?

raja
更新于 2020-03-09 06:36:32

580 次浏览

Java 9 在 `java.util.concurrent.Flow` 包下引入了 Reactive Streams,它支持一个可互操作的发布-订阅框架。它处理跨异步边界的异步数据流(将元素传递到另一个线程或线程池),并且接收方不必缓冲任意数量的数据,从而避免缓冲区溢出。Flow API 包含四个相互关联的核心接口:Publisher、Subscriber、Subscription 和 Processor。语法@FunctionalInterface public static interface Publisher {    public void subscribe(Subscriber

如何在 Java 9 中检索 Process API 的所有进程数据?

raja
更新于 2020-03-09 05:36:55

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 -> ... 阅读更多

如何在 Java 9 中使用 Process API 获取进程的所有子进程?

raja
更新于 2020-03-06 18:23:41

1K+ 次浏览

进程处理类和相关 API 已在 Java 9 中引入。我们可以使用 `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 = ... 阅读更多

如何在 Java 9 中使用 Process API 终止/销毁进程?

raja
更新于 2020-03-06 12:28:44

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("---------------------------");       ... 阅读更多

Java 9 中 `ofInstant()` 方法的重要性?

raja
更新于 2020-03-06 10:35:54

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); ... 阅读更多

Java 9 中 `toEpochSecond()` 方法有什么用?

raja
更新于 2020-03-06 08:23:43

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")));       ... 阅读更多

Java 9 中国际化的增强功能有哪些?

raja
更新于 2020-03-06 07:32:25

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` 实例以该编码读取输入流,并在遇到无效序列时抛出异常。系统属性读取 ... 阅读更多

如何在 Java 9 中访问 StackWalker 的每个堆栈元素?

raja
更新于 2020-03-05 13:37:55

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() ... 阅读更多

Java 9 中 `Collectors.flatMapping()` 方法的重要性?

raja
更新于 2020-03-05 10:58:50

353 次浏览

在 Java 9 中,`Collectors` 类添加了一个新方法:`flatMapping()`。它类似于 `Collectors.mapping()` 方法,其中 `flatMapping()` 方法允许我们处理嵌套集合。`Collectors.flatMapping()` 方法接收一个要应用于输入元素的函数和一个收集器来累积通过该函数传递的元素。与 `Collectors.mapping()` 方法不同,`Collectors.flatMapping()` 方法处理元素流,允许我们摆脱不必要的中间集合。语法public static Collector flatMapping(Function

Java 9 中 `Collectors.filtering()` 方法的重要性?

raja
更新于 2020-03-05 09:45:18

306 次浏览

Collectors 类是 Stream API 的重要组成部分。在 Java 9 中,一个新的方法:filtering() 被添加到 Collectors 类中。Collectors.filtering() 方法可以用于过滤流中的元素。它类似于流上的 filter() 方法。filter() 方法在元素分组之前处理值,而 filtering() 方法可以很好地与 Collectors.groupingBy() 方法一起使用,以便在过滤步骤发生之前对值进行分组。语法public static Collector filtering(Predicate

广告