JreCompat (Apache Tomcat 10.1.16 API Documentation)
Description: declaration: package: org.apache.tomcat.util.compat, class: JreCompat

Package org.apache.tomcat.util.compat

# Class JreCompat

java.lang.Object
org.apache.tomcat.util.compat.JreCompat

Direct Known Subclasses:
  `Jre19Compat`

public class JreCompat extends 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 Summary

  Constructors
  Constructor
  Description
  `JreCompat()`

- ## Method Summary

  Modifier and Type
  Method
  Description
  `Object`
  `createVirtualThreadBuilder(String name)`
  Create a thread builder for virtual threads using the given name to name the threads.
  `Object`
  `getExecutor(Thread thread)`
  Obtains the executor, if any, used to create the provided thread.
  `static JreCompat`
  `getInstance()`
  `SocketAddress`
  `getUnixDomainSocketAddress(String path)`
  Return Unix domain socket address for given path.
  `static boolean`
  `isGraalAvailable()`
  `static boolean`
  `isJre16Available()`
  `static boolean`
  `isJre19Available()`
  `static boolean`
  `isJre21Available()`
  `static boolean`
  `isJre22Available()`
  `ServerSocketChannel`
  `openUnixDomainServerSocketChannel()`
  Create server socket channel using the Unix domain socket ProtocolFamily.
  `SocketChannel`
  `openUnixDomainSocketChannel()`
  Create socket channel using the Unix domain socket ProtocolFamily.
  `void`
  `threadBuilderStart(Object threadBuilder, Runnable command)`
  Create a thread with the given thread builder and use it to execute the given runnable.

  ### Methods inherited from class java.lang.Object

  `clone, equals, finalize, getClass, hashCode, notify, notifyAll, toString, wait, wait, wait`

- ## Constructor Details

  - ### JreCompat

    public JreCompat()

- ## Method Details

  - ### 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 SocketAddress getUnixDomainSocketAddress(String path)
    Return Unix domain socket address for given path.
    Parameters:
      `path` - The path
    Returns:
      the socket address

  - ### openUnixDomainServerSocketChannel

    public ServerSocketChannel openUnixDomainServerSocketChannel()
    Create server socket channel using the Unix domain socket ProtocolFamily.
    Returns:
      the server socket channel

  - ### openUnixDomainSocketChannel

    public SocketChannel openUnixDomainSocketChannel()
    Create socket channel using the Unix domain socket ProtocolFamily.
    Returns:
      the socket channel

  - ### getExecutor

    public Object getExecutor(Thread thread) throws NoSuchFieldException, SecurityException, IllegalArgumentException, 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:
      `NoSuchFieldException` - If a field used via reflection to obtain the executor cannot be found
      `SecurityException` - If a security exception occurs while trying to identify the executor
      `IllegalArgumentException` - If the instance object does not match the class of the field when obtaining a field value via reflection
      `IllegalAccessException` - If a field is not accessible due to access restrictions

  - ### createVirtualThreadBuilder

    public Object createVirtualThreadBuilder(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(Object threadBuilder, 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