Java 9 - Peningkatan Proses API

Di Java 9 Process API yang bertanggung jawab untuk mengontrol dan mengelola proses sistem operasi telah meningkat pesat. ProcessHandle Class sekarang menyediakan proses ID asli proses, waktu mulai, akumulasi waktu CPU, argumen, perintah, pengguna, proses induk, dan turunan. Kelas ProcessHandle juga menyediakan metode untuk memeriksa keaktifan proses dan untuk menghancurkan proses. Ini memiliki metode onExit, kelas CompletableFuture dapat melakukan tindakan secara asinkron ketika proses keluar.

Tester.java

import java.time.ZoneId;
import java.util.stream.Stream;
import java.util.stream.Collectors;
import java.io.IOException;

public class Tester {
   public static void main(String[] args) throws IOException {
      ProcessBuilder pb = new ProcessBuilder("notepad.exe");
      String np = "Not Present";
      Process p = pb.start();
      ProcessHandle.Info info = p.info();
      System.out.printf("Process ID : %s%n", p.pid());
      System.out.printf("Command name : %s%n", info.command().orElse(np));
      System.out.printf("Command line : %s%n", info.commandLine().orElse(np));

      System.out.printf("Start time: %s%n",
         info.startInstant().map(i -> i.atZone(ZoneId.systemDefault())
         .toLocalDateTime().toString()).orElse(np));

      System.out.printf("Arguments : %s%n",
         info.arguments().map(a -> Stream.of(a).collect(
         Collectors.joining(" "))).orElse(np));

      System.out.printf("User : %s%n", info.user().orElse(np));
   } 
}

Keluaran

Anda akan melihat output berikut.

Process ID : 5800
Command name : C:\Windows\System32\notepad.exe
Command line : Not Present
Start time: 2017-11-04T21:35:03.626
Arguments : Not Present
User: administrator