Untitled
unknown
java
2 years ago
1.4 kB
14
Indexable
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();
}
}Editor is loading...