import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.TimeUnit;

public class Demo {

    public static void main(String[] args) throws InterruptedException {
        Thread.ofVirtual().start(new AAAConsumer());
        // here I catch thread/heap dump
        TimeUnit.SECONDS.sleep(15);
    }

    static class AAAConsumer implements Runnable {

        @Override
        public void run() {
            try {
                new ArrayBlockingQueue<>(100).take();
            } catch (InterruptedException e) {
                System.out.println("AAAConsumer interrupted");
            }
        }
    }
} 