When I run below code, Producer run() method starts and puts random numbers to jobs queue but Consumer run() method never runs. What is the main problem here?
Here is Main class;
public static LinkedBlockingQueue<Integer> jobs = new LinkedBlockingQueue<>();
public static void main(){
    MessageProducer producer = new MessageProducer(jobs);
    Thread producerThread = new Thread(producer);
    producerThread.run();
    MessageConsumer consumer = new MessageConsumer(jobs);
    Executor executor = Executors.newFixedThreadPool(3);
    executor.execute(consumer);
}
Producer;
public class MessageProducer implements Runnable {
    public LinkedBlockingQueue<Integer> jobs;
    public MessageProducer(LinkedBlockingQueue<Integer> jobs){
        this.jobs = jobs;
    }
    @Override
    public void run() {
        while(true) {
            try {
                jobs.put((int) (Math.random() * 10));
                Thread.sleep(1000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
Consumer;
public class MessageConsumer implements Runnable{
    public LinkedBlockingQueue<Integer> jobs;
    public MessageConsumer(LinkedBlockingQueue<Integer> jobs) {
        this.jobs = jobs;
    }
    @Override
    public void run() {
        while(true) {
            System.out.println("Executing " + jobs.poll());
            try {
                Thread.sleep(2000);
            } catch (InterruptedException e) {
                e.printStackTrace();
            }
        }
    }
}
 
    