Java

Java多线程execute如何实现线程间通信

小樊
81
2024-09-29 12:35:01
栏目: 编程语言

在Java中,我们可以使用wait()和notifyAll()方法来实现线程间的通信。这两个方法用于协调多个线程对共享资源的访问。以下是一个简单的示例,展示了如何使用execute方法实现线程间通信:

public class ThreadCommunication {

    private static final Object lock = new Object();
    private static boolean messageReady = false;

    public static void main(String[] args) {
        Thread producer = new Thread(new Producer());
        Thread consumer = new Thread(new Consumer());

        producer.start();
        consumer.start();
    }

    static class Producer implements Runnable {
        @Override
        public void run() {
            synchronized (lock) {
                try {
                    System.out.println("生产者准备生产消息");
                    lock.wait(); // 等待消费者消费消息
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println("生产者生产消息");
                messageReady = true;
                lock.notifyAll(); // 通知消费者消息已准备好
            }
        }
    }

    static class Consumer implements Runnable {
        @Override
        public void run() {
            synchronized (lock) {
                try {
                    while (!messageReady) {
                        lock.wait(); // 如果没有消息,消费者等待
                    }
                } catch (InterruptedException e) {
                    e.printStackTrace();
                }

                System.out.println("消费者消费消息");
                messageReady = false;
                lock.notifyAll(); // 通知生产者继续生产消息
            }
        }
    }
}

在这个示例中,我们创建了一个生产者线程和一个消费者线程。生产者线程在生产消息之前需要等待消费者线程消费完之前的消息,而消费者线程在没有消息可读时需要等待生产者线程生产消息。我们使用synchronized关键字和wait()、notifyAll()方法来实现线程间的通信。

0
看了该问题的人还看了