j21
- Write a java program to accept āNā Subject Names from a user store them into
LinkedList Collection and Display them by using Iterator interface. [15 M]
import java.util.*;
public class SubjectNames {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);
LinkedList<String> subjectList = new LinkedList<>();
System.out.print("Enter the number of subjects (N): ");
int N = scanner.nextInt();
scanner.nextLine(); // Consume newline
System.out.println("Enter the subject names:");
for (int i = 0; i < N; i++) {
String subject = scanner.nextLine();
subjectList.add(subject);
}
System.out.println("Subjects entered:");
Iterator<String> iterator = subjectList.iterator();
while (iterator.hasNext()) {
System.out.println(iterator.next());
}
scanner.close();
}
}
- Write a java program to solve producer consumer problem in which a producer
produces a value and consumer consume the value before producer generate the next
value. (Hint: use thread synchronization)
import java.util.LinkedList;
class Buffer {
private LinkedList<Integer> queue = new LinkedList<>();
private final int CAPACITY = 1;
public void produce(int item) throws InterruptedException {
synchronized (this) {
while (queue.size() == CAPACITY) {
wait();
}
System.out.println("Producer produced: " + item);
queue.add(item);
notify();
}
}
public void consume() throws InterruptedException {
synchronized (this) {
while (queue.isEmpty()) {
wait();
}
int consumedItem = queue.remove();
System.out.println("Consumer consumed: " + consumedItem);
notify();
}
}
}
class Producer extends Thread {
private Buffer buffer;
public Producer(Buffer buffer) {
this.buffer = buffer;
}
public void run() {
try {
int value = 0;
while (true) {
buffer.produce(value++);
Thread.sleep(1000); // Simulating time taken to produce
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
class Consumer extends Thread {
private Buffer buffer;
public Consumer(Buffer buffer) {
this.buffer = buffer;
}
public void run() {
try {
while (true) {
buffer.consume();
Thread.sleep(1000); // Simulating time taken to consume
}
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
public class ProducerConsumer {
public static void main(String[] args) {
Buffer buffer = new Buffer();
Producer producer = new Producer(buffer);
Consumer consumer = new Consumer(buffer);
producer.start();
consumer.start();
}
}