protected ThreadPoolExecutor getWorkersThreadPool() {
        return workersThreadPool;
    }
@Test
    void testConstructor() {
        URL url = URL.valueOf("default://")
                .addParameter(THREAD_POOL_PREFIX_PARAM_NAME, "test")
                .addParameter(THREAD_POOL_SIZE_PARAM_NAME, 10)
                .addParameter(THREAD_POOL_KEEP_ALIVE_TIME_PARAM_NAME, 100);

        AbstractDynamicConfiguration configuration = new AbstractDynamicConfiguration(url) {

            @Override
            protected String doGetConfig(String key, String group) {
                return null;
            }

            @Override
            protected void doClose() {}

            @Override
            protected boolean doRemoveConfig(String key, String group) {
                return false;
            }
        };

        ThreadPoolExecutor threadPoolExecutor = configuration.getWorkersThreadPool();
        ThreadFactory threadFactory = threadPoolExecutor.getThreadFactory();

        Thread thread = threadFactory.newThread(() -> {});

        assertEquals(10, threadPoolExecutor.getCorePoolSize());
        assertEquals(10, threadPoolExecutor.getMaximumPoolSize());
        assertEquals(100, threadPoolExecutor.getKeepAliveTime(TimeUnit.MILLISECONDS));
        assertEquals("test-thread-1", thread.getName());
    }