< prev index next > src/java.base/windows/classes/sun/nio/ch/NativeThread.java
Print this page
* questions.
*/
package sun.nio.ch;
!
- // Signalling operations on native threads
public class NativeThread {
! private static final long VIRTUAL_THREAD_ID = -1L;
-
- /**
- * Returns the id of the current native thread if the platform can signal
- * native threads, 0 if the platform can not signal native threads, or
- * -1L if the current thread is a virtual thread.
- */
- public static long current() {
- if (Thread.currentThread().isVirtual()) {
- return VIRTUAL_THREAD_ID;
- } else {
- // no support for signalling threads on Windows
- return 0;
- }
- }
/**
! * Signals the given native thread.
! *
- * @throws IllegalArgumentException if tid is not a token to a native thread
*/
! static void signal(long tid) {
! throw new UnsupportedOperationException();
}
/**
! * Returns true the tid is the id of a native thread.
*/
! static boolean isNativeThread(long tid) {
! return false;
! }
!
! /**
! * Returns true if tid is -1L.
- * @see #current()
- */
- static boolean isVirtualThread(long tid) {
- return (tid == VIRTUAL_THREAD_ID);
}
}
* questions.
*/
package sun.nio.ch;
! import java.util.concurrent.locks.LockSupport;
public class NativeThread {
! private NativeThread() { }
/**
! * Returns the Thread to signal the current thread or {@code null} if the current
! * thread cannot be signalled.
*/
! public static Thread threadToSignal() {
! Thread thread = Thread.currentThread();
+ return thread.isVirtual() ? thread : null;
}
/**
! * Signals the given thread.
+ * @throws UnsupportedOperationException is not supported
*/
! public static void signal(Thread thread) {
! if (thread.isVirtual()) {
! LockSupport.unpark(null);
! } else {
! throw new UnsupportedOperationException();
! }
}
}
< prev index next >