code: private static void initExceptionThreadPool() {
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.entry(tc, "initExceptionThreadPool");
  
          // Do a synchronous check to ensure once-only creation
          synchronized (exceptionTPCreateSync) {
              if (exceptionThreadPool == null) {
                  // Get the maximum size for the thread pool, defaulting if
                  // not specified or if the value cannot be parsed
                  int maxThreads = Integer.parseInt(ApiJmsConstants.EXCEPTION_MAXTHREADS_DEFAULT_INT);
                  String maxThreadsStr = RuntimeInfo.getProperty(ApiJmsConstants.EXCEPTION_MAXTHREADS_NAME_INT,
                                                                 ApiJmsConstants.EXCEPTION_MAXTHREADS_DEFAULT_INT);
                  try {
                      maxThreads = Integer.parseInt(maxThreadsStr);
                  } catch (NumberFormatException e) {
                      // No FFDC code needed, but we will exception this
                      SibTr.exception(tc, e);
                  }
  
                  // Trace the value we will use
                  if (TraceComponent.isAnyTracingEnabled() && tc.isDebugEnabled())
                      SibTr.debug(tc, ApiJmsConstants.EXCEPTION_MAXTHREADS_NAME_INT + ": " + Integer.toString(maxThreads));
  
                  // Create the thread pool
                  exceptionThreadPool = new ThreadPool(ApiJmsConstants.EXCEPTION_THREADPOOL_NAME_INT, 0, maxThreads);
              }
          }
  
          if (TraceComponent.isAnyTracingEnabled() && tc.isEntryEnabled())
              SibTr.exit(tc, "initExceptionThreadPool");
      }
docs: PK59962 Ensure the existence of a single thread pool within the process