25 package java.lang; 26 27 import java.security.PrivilegedAction; 28 import java.time.Duration; 29 import java.time.Instant; 30 import java.util.Arrays; 31 import java.util.Optional; 32 import java.util.concurrent.CompletableFuture; 33 import java.util.concurrent.ConcurrentHashMap; 34 import java.util.concurrent.ConcurrentMap; 35 import java.util.concurrent.Executor; 36 import java.util.concurrent.Executors; 37 import java.util.concurrent.ForkJoinPool; 38 import java.util.concurrent.SynchronousQueue; 39 import java.util.concurrent.ThreadFactory; 40 import java.util.concurrent.ThreadPoolExecutor; 41 import java.util.concurrent.TimeUnit; 42 import java.util.stream.IntStream; 43 import java.util.stream.Stream; 44 45 import sun.misc.InnocuousThread; 46 47 import static java.security.AccessController.doPrivileged; 48 49 /** 50 * ProcessHandleImpl is the implementation of ProcessHandle. 51 * 52 * @see Process 53 * @since 9 54 */ 55 final class ProcessHandleImpl implements ProcessHandle { 56 /** 57 * Cache the ProcessHandle of this process. 58 */ 59 private static final ProcessHandleImpl current; 60 61 /** 62 * Map of pids to ExitCompletions. 63 */ 64 private static final ConcurrentMap<Long, ExitCompletion> 65 completions = new ConcurrentHashMap<>(); 66 | 25 package java.lang; 26 27 import java.security.PrivilegedAction; 28 import java.time.Duration; 29 import java.time.Instant; 30 import java.util.Arrays; 31 import java.util.Optional; 32 import java.util.concurrent.CompletableFuture; 33 import java.util.concurrent.ConcurrentHashMap; 34 import java.util.concurrent.ConcurrentMap; 35 import java.util.concurrent.Executor; 36 import java.util.concurrent.Executors; 37 import java.util.concurrent.ForkJoinPool; 38 import java.util.concurrent.SynchronousQueue; 39 import java.util.concurrent.ThreadFactory; 40 import java.util.concurrent.ThreadPoolExecutor; 41 import java.util.concurrent.TimeUnit; 42 import java.util.stream.IntStream; 43 import java.util.stream.Stream; 44 45 import static java.security.AccessController.doPrivileged; 46 47 /** 48 * ProcessHandleImpl is the implementation of ProcessHandle. 49 * 50 * @see Process 51 * @since 9 52 */ 53 final class ProcessHandleImpl implements ProcessHandle { 54 /** 55 * Cache the ProcessHandle of this process. 56 */ 57 private static final ProcessHandleImpl current; 58 59 /** 60 * Map of pids to ExitCompletions. 61 */ 62 private static final ConcurrentMap<Long, ExitCompletion> 63 completions = new ConcurrentHashMap<>(); 64 |