Q1]

import java.util.Random;

public class NumberProcessor {
    public static void main(String[] args) {
        RandomNumberGenerator randomNumberGenerator = new RandomNumberGenerator();
        NumberSquareCalculator numberSquareCalculator = new NumberSquareCalculator();
        NumberCubeCalculator numberCubeCalculator = new NumberCubeCalculator();

        randomNumberGenerator.start();
        numberSquareCalculator.start();
        numberCubeCalculator.start();
    }
}

class RandomNumberGenerator extends Thread {
    public void run() {
        Random random = new Random();
        try {
            while (true) {
                int number = random.nextInt(100);
                System.out.println("Generated number: " + number);
                if (number % 2 == 0) {
                    NumberSquareCalculator.queue.add(number);
                } else {
                    NumberCubeCalculator.queue.add(number);
                }
                Thread.sleep(1000);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

class NumberSquareCalculator extends Thread {
    public static BlockingQueue<Integer> queue = new LinkedBlockingQueue<>();

    public void run() {
        try {
            while (true) {
                int number = queue.take();
                int square = number * number;
                System.out.println("Square of " + number + " is: " + square);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

class NumberCubeCalculator extends Thread {
    public static BlockingQueue<Integer> queue = new LinkedBlockingQueue<>();

    public void run() {
        try {
            while (true) {
                int number = queue.take();
                int cube = number * number * number;
                System.out.println("Cube of " + number + " is: " + cube);
            }
        } catch (InterruptedException e) {
            e.printStackTrace();
        }
    }
}

Q2]

import java.sql.*;

public class ProductManagement {
    static final String JDBC_DRIVER = "com.mysql.jdbc.Driver";
    static final String DB_URL = "jdbc:mysql://localhost:3306/your_database_name";

    static final String USER = "your_username";
    static final String PASS = "your_password";

    public static void main(String[] args) {
        Connection conn = null;
        Statement stmt = null;
        try {
          
            Class.forName(JDBC_DRIVER);

            
            System.out.println("Connecting to database...");
            conn = DriverManager.getConnection(DB_URL, USER, PASS);

           
            System.out.println("Creating statement...");
            stmt = conn.createStatement();

         
            System.out.println("Creating Product table...");
            String createTableSQL = "CREATE TABLE Product ("
                    + "Pid INT AUTO_INCREMENT PRIMARY KEY,"
                    + "Pname VARCHAR(255),"
                    + "Price DECIMAL(10, 2)"
                    + ")";
            stmt.executeUpdate(createTableSQL);
            System.out.println("Product table created successfully");

            
            System.out.println("Inserting records into Product table...");
            String insertSQL = "INSERT INTO Product (Pname, Price) VALUES (?, ?)";
            PreparedStatement preparedStatement = conn.prepareStatement(insertSQL);
            preparedStatement.setString(1, "Product 1");
            preparedStatement.setDouble(2, 10.99);
            preparedStatement.executeUpdate();

            preparedStatement.setString(1, "Product 2");
            preparedStatement.setDouble(2, 20.99);
            preparedStatement.executeUpdate();

            preparedStatement.setString(1, "Product 3");
            preparedStatement.setDouble(2, 30.99);
            preparedStatement.executeUpdate();

            preparedStatement.setString(1, "Product 4");
            preparedStatement.setDouble(2, 40.99);
            preparedStatement.executeUpdate();

            preparedStatement.setString(1, "Product 5");
            preparedStatement.setDouble(2, 50.99);
            preparedStatement.executeUpdate();

            System.out.println("Records inserted successfully");

          
            System.out.println("Displaying all records from Product table...");
            String selectSQL = "SELECT * FROM Product";
            ResultSet rs = stmt.executeQuery(selectSQL);
            while (rs.next()) {
                int Pid = rs.getInt("Pid");
                String Pname = rs.getString("Pname");
                double Price = rs.getDouble("Price");

                System.out.println("Pid: " + Pid + ", Pname: " + Pname + ", Price: " + Price);
            }
            rs.close();

        } catch (SQLException se) {
            se.printStackTrace();
        } catch (Exception e) {
            e.printStackTrace();
        } finally {
            try {
                if (stmt != null) stmt.close();
            } catch (SQLException se2) {
            }
            try {
                if (conn != null) conn.close();
            } catch (SQLException se) {
                se.printStackTrace();
            }
        }
        System.out.println("Goodbye!");
    }
}
