Search code examples
javamultithreadingjava.util.concurrent

Run a new thread and don't wait this thread finish


I am new to the Threading, so if please give me an advice for my case.

I would like create a new thread to do something and I don't care this thread can do complete or not.

I intend to use ExecutorCompletionService to do my job but this class is not suitable for me. It must call take or poll to drain a queue to avoid memory leak. So, this means I must wait until the thread complete. I read this from this question

This is the current code

ExecutorService executor = Executors.newCachedThreadPool();

CompletionService<Entity> completion = new ExecutorCompletionService<>(executor);

DoSomeThingClass doSomething = getInstance();

completion.submit(doSomething);

executor.shutdown();

// Continue to do other job and I don't care whenever doSomeThing is complete.
// However when doSomeThing finish, I don't need to do anything to avoid memory leak

For that reason, please give me an approach for my case and some skeleton code for example.

Thank you so much


Solution

  • I can resolve my problem as the following code

    public static void main(
        String[] args) {
        ExecutorService executor = Executors.newCachedThreadPool();
        executor.execute(new Runnable() {
            @Override
            public void run() {
                try {
                    TimeUnit.SECONDS.sleep(2);
                } catch (InterruptedException e) {
    
                } finally {
                    System.out.println("Thread 2 is finished");
                }
            }
        });
        executor.shutdown();
        System.out.println("Thread 1 is finished");
    }