在Java中,有多种方法可以实现多线程之间的通信和协作,以下是几种常见的方式:
- public class SharedObject {
- private String message;
-
- public synchronized void write(String message) {
- while (this.message != null) {
- try {
- wait();
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- }
- }
- this.message = message;
- notifyAll();
- }
-
- public synchronized String read() {
- while (this.message == null) {
- try {
- wait();
- } catch (InterruptedException e) {
- Thread.currentThread().interrupt();
- }
- }
- String message = this.message;
- this.message = null;
- notifyAll();
- return message;
- }
- }
-
- public class WriterThread extends Thread {
- private SharedObject sharedObject;
- private String message;
-
- public WriterThread(SharedObject sharedObject, String message) {
- this.sharedObject = sharedObject;
- this.message = message;
- }
-
- @Override
- public void run() {
- sharedObject.write(message);
- }
- }
-
- public class ReaderThread extends Thread {
- private SharedObject sharedObject;
-
- public ReaderThread(SharedObject sharedObject) {
- this.sharedObject = sharedObject;
- }
-
- @Override
- public void run() {
- String message = sharedObject.read();
- System.out.println("Read message: " + message);
- }
- }
-
- public class Main {
- public static void main(String[] args) {
- SharedObject sharedObject = new SharedObject();
- WriterThread writerThread = new WriterThread(sharedObject, "Hello, World!");
- ReaderThread readerThread = new ReaderThread(sharedObject);
- writerThread.start();
- readerThread.start();
- }
- }