import java.util.concurrent.LinkedBlockingQueue;

public class BQueueTest {
    private final LinkedBlockingQueue<Integer> queue = new LinkedBlockingQueue<>(); // capacity 2

    private volatile boolean flag = false;

    public void producer() {
        queue.offer(100);
        flag = true;
    }

    public void consumer() {
        try {
            int data = queue.take();
        } catch (InterruptedException ignored) {
        }
    }

    public boolean test() throws InterruptedException {
        Thread consumerThread = new Thread(this::consumer, "T2");
        Thread producerThread = new Thread(this::producer, "T1");
        consumerThread.start();
        producerThread.start();
        producerThread.join();

        if (flag) {
            consumerThread.interrupt();
            producerThread.interrupt();
            return true;
        }
        return false;
    }
}