English | 简体中文 | 繁體中文 | Русский язык | Français | Español | Português | Deutsch | 日本語 | 한국어 | Italiano | بالعربية

تعليمية Java الأساسية

تحكم العمليات في Java

مجموعات Java Array

Java توجيه الأشياء (I)

Java توجيه الأشياء (II)

Java توجيه الأشياء (III)

معالجة الاستثناء Java

قائمة Java List

Java Queue (الصف)

مجموعات Java Map

مجموعات Java Set

Java إدخال/إخراج (I/O)

Java Reader/Writer

مواضيع أخرى في Java

تحسين API لـ Process في Java 9

Java New Features 9

في Java 9 قبل، كان API لـ Process مازال يفتقر إلى دعم أساسي لاستخدام العمليات المحلية، مثل الحصول على PID للعمليات والمالك، وقت بدء العمليات، كم من وقت CPU يستخدمها العمليات، كم عدد العمليات المحلية التي تعمل وما إلى ذلك.

أضاف Java 9 واجهة ProcessHandle إلى API Process لتحسين فئة java.lang.Process.

يمكن استخدام واجهة ProcessHandle للتحديد العملية المحلية وعرض حالة العملية وإدارة العملية.

يحتوي واجهة ProcessHandle على واجهة Info لتجنب الضرورة المستمرة لاستخدام الكود المحلي للحصول على PID للعملية المحلية.

لا يمكن تقديم تنفيذ لوسائل الاعلام. إذا كنا نريد تقديم وسيلة抽象ة ومجموعة من وسائل الاعلام غير الافتراضية (وسائل الاعلام والتنفيذ)، فإننا يجب أن نستخدم فئة الوسائل الاعلامية.

يمكن استخدام طريقة onExit() المعلن عنها في واجهة ProcessHandle للتحكم في بعض العمليات عند إنهاء عملية معينة.

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: %n", p.pid());
      System.out.printf("Command name: %n", info.command().orElse(np));
      System.out.printf("Command line: %n", info.commandLine().orElse(np));
 
      System.out.printf("Start time: %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));
   } 
}

The output result of the above example is:

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

Java New Features 9