public static void start(IDetachedRunnable runnable, Object... args)
    {
        //  Prepare child thread
        Thread shim = new ShimThread(runnable, args);
        shim.setDaemon(true);
        shim.start();
    }
@Test
    public void testDetached()
    {
        final CountDownLatch stopped = new CountDownLatch(1);
        ZThread.start((args) -> {
            try (ZContext ctx = new ZContext()) {
                Socket push = ctx.createSocket(SocketType.PUSH);
                assertThat(push, notNullValue());
            }
            stopped.countDown();
        });
        try {
            stopped.await();
        }
        catch (InterruptedException e) {
            Thread.currentThread().interrupt();
            e.printStackTrace();
        }
    }