OneCompiler

ns21

133

Q1]

import java.util.*;

public class SubjectNames {
public static void main(String[] args) {
Scanner scanner = new Scanner(System.in);

    System.out.print("Enter the value of N: ");
    int N = scanner.nextInt();

   
    LinkedList<String> subjects = new LinkedList<>();

   
    System.out.println("Enter " + N + " subject names:");
    for (int i = 0; i < N; i++) {
        String subject = scanner.next();
        subjects.add(subject);
    }


    System.out.println("Subject Names:");
    Iterator<String> iterator = subjects.iterator();
    while (iterator.hasNext()) {
        System.out.println(iterator.next());
    }

    scanner.close();
}

}

Q2]

import java.util.LinkedList;

class ProducerConsumer {
LinkedList<Integer> buffer = new LinkedList<>();
int capacity = 1;

public void produce() throws InterruptedException {
    int value = 0;
    while (true) {
        synchronized (this) {
            while (buffer.size() == capacity) {
                wait();
            }
            System.out.println("Producer produced: " + value);
            buffer.add(value++);
            notify();
            Thread.sleep(1000); // Simulating some delay
        }
    }
}

public void consume() throws InterruptedException {
    while (true) {
        synchronized (this) {
            while (buffer.isEmpty()) {
                wait();
            }
            int consumedValue = buffer.removeFirst();
            System.out.println("Consumer consumed: " + consumedValue);
            notify();
            Thread.sleep(1000);
        }
    }
}

}

public class Main {
public static void main(String[] args) {
final ProducerConsumer pc = new ProducerConsumer();

    Thread producerThread = new Thread(new Runnable() {
        public void run() {
            try {
                pc.produce();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    });

    Thread consumerThread = new Thread(new Runnable() {
        public void run() {
            try {
                pc.consume();
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    });

    producerThread.start();
    consumerThread.start();
}

}