Computer >> Hướng Dẫn Máy Tính >  >> Lập Trình >> Java

Cách tạo tiến trình dùng ProcessBuilder trong Java 9?

Java 9 thêm interface ProcessHandle vào Process API nâng cao class Process. Instance của interface ProcessHandle xác định tiến trình local cho phép truy vấn trạng thái tiến trình và quản lý tiến trình, ProcessHandle.Info cho phép dùng code local do cần lấy PID của tiến trình local.

Lớp ProcessBuilder tạo tiến trình hệ điều hành riêng biệt. Ví dụ dưới tạo tiến trình ứng dụng notepad dùng lớp ProcessBuilder.

Ví dụ

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

public class ProcessBuilderTest {
    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));
    }
}

Ví dụ trên khởi chạy notepad application như sau:

Cách tạo tiến trình dùng ProcessBuilder trong Java 9?

Kết quả

Process ID : 3728
Command name : C:\WINDOWS\System32\notepad.exe
Command line : Not Present
Start time: 2020-04-20T18:06:30.378
Arguments : Not Present
User : Tutorialspoint\User