Class JreCompat

  • Direct Known Subclasses:
    Jre19Compat

    public class JreCompat
    extends java.lang.Object
    This is the base implementation class for JRE compatibility and provides an implementation based on Java 11. Sub-classes may extend this class and provide alternative implementations for later JRE versions
    • Constructor Detail

      • JreCompat

        public JreCompat()
    • Method Detail

      • getInstance

        public static JreCompat getInstance()
      • isGraalAvailable

        public static boolean isGraalAvailable()
      • isJre16Available

        public static boolean isJre16Available()
      • isJre19Available

        public static boolean isJre19Available()
      • isJre21Available

        public static boolean isJre21Available()
      • isJre22Available

        public static boolean isJre22Available()
      • getUnixDomainSocketAddress

        public java.net.SocketAddress getUnixDomainSocketAddress​(java.lang.String path)
        Return Unix domain socket address for given path.
        Parameters:
        path - The path
        Returns:
        the socket address
      • openUnixDomainServerSocketChannel

        public java.nio.channels.ServerSocketChannel openUnixDomainServerSocketChannel()
        Create server socket channel using the Unix domain socket ProtocolFamily.
        Returns:
        the server socket channel
      • openUnixDomainSocketChannel

        public java.nio.channels.SocketChannel openUnixDomainSocketChannel()
        Create socket channel using the Unix domain socket ProtocolFamily.
        Returns:
        the socket channel
      • getExecutor

        public java.lang.Object getExecutor​(java.lang.Thread thread)
                                     throws java.lang.NoSuchFieldException,
                                            java.lang.SecurityException,
                                            java.lang.IllegalArgumentException,
                                            java.lang.IllegalAccessException
        Obtains the executor, if any, used to create the provided thread.
        Parameters:
        thread - The thread to examine
        Returns:
        The executor, if any, that created the provided thread
        Throws:
        java.lang.NoSuchFieldException - If a field used via reflection to obtain the executor cannot be found
        java.lang.SecurityException - If a security exception occurs while trying to identify the executor
        java.lang.IllegalArgumentException - If the instance object does not match the class of the field when obtaining a field value via reflection
        java.lang.IllegalAccessException - If a field is not accessible due to access restrictions
      • createVirtualThreadBuilder

        public java.lang.Object createVirtualThreadBuilder​(java.lang.String name)
        Create a thread builder for virtual threads using the given name to name the threads.
        Parameters:
        name - The base name for the threads
        Returns:
        The thread buidler for virtual threads
      • threadBuilderStart

        public void threadBuilderStart​(java.lang.Object threadBuilder,
                                       java.lang.Runnable command)
        Create a thread with the given thread builder and use it to execute the given runnable.
        Parameters:
        threadBuilder - The thread builder to use to create a thread
        command - The command to run