在Java中,多線程通信可以通過以下幾種方式實現(xiàn):
class SharedObject {
boolean flag = false;
synchronized void waitMethod() {
while (!flag) {
try {
wait();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
synchronized void notifyMethod() {
flag = true;
notify();
}
}
import java.util.concurrent.locks.Condition;
import java.util.concurrent.locks.Lock;
import java.util.concurrent.locks.ReentrantLock;
class SharedObject {
Lock lock = new ReentrantLock();
Condition condition = lock.newCondition();
void waitMethod() {
lock.lock();
try {
while (!flag) {
condition.await();
}
} catch (InterruptedException e) {
e.printStackTrace();
} finally {
lock.unlock();
}
}
void notifyMethod() {
lock.lock();
try {
flag = true;
condition.signal();
} finally {
lock.unlock();
}
}
}
import java.util.concurrent.ArrayBlockingQueue;
import java.util.concurrent.BlockingQueue;
class SharedObject {
BlockingQueue<Integer> queue = new ArrayBlockingQueue<>(10);
void producer() {
try {
queue.put(1);
} catch (InterruptedException e) {
e.printStackTrace();
}
}
void consumer() {
try {
int value = queue.take();
} catch (InterruptedException e) {
e.printStackTrace();
}
}
}
這些是Java中實現(xiàn)多線程通信的一些方法,開發(fā)者可以根據(jù)具體的需求選擇合適的方式來實現(xiàn)多線程之間的通信。