Untitled
java
23 days ago
1.4 kB
5
Indexable
Never
class Task { int taskNumber; LocalDateTime date; } class Producer implements Runnable { private List<Task> tasks; private ArrayBlockingQueue<Task> queue; public Producer(ArrayBlockingQueue<Task> queue) { this.queue = queue; // queue: [task] } @Override public void run() { // add 1000 tasks to the queue, later tasks will be processed by the consumer for(int i = 1; i <= 1000; i++) { Task task = new Task(); task.taskNumber = i; this.queue.add(task); } } } class Consumer implements Runnable { static final int NUM_TASKS = 1000; private ArrayBlockingQueue<Task> queue; public Consumer(ArrayBlockingQueue<Task> queue) { this.queue = queue; } @Override public void run() { while (true) { int size = queue.size(); // check if the size is greater than or equal to number of tasks, then proceed if (size >= NUM_TASKS) { while (!queue.isEmpty()) { Task task = queue.poll(); System.out.println("task number: " + task.taskNumber); } } } } public static void main(String[] args) throws InterruptedException { ArrayBlockingQueue<Task> queue = new ArrayBlockingQueue<>(1001); Producer producer = new Producer(queue); Consumer consumer = new Consumer(queue); Thread producerThread = new Thread(producer); Thread consumerThread = new Thread(consumer); producerThread.start(); consumerThread.start(); producerThread.join(); consumerThread.join(); } }