在 Java 中,要让一个线程等待另一个线程的结果,可以使用线程之间的通信机制,如阻塞队列、信号量等。以下是一个简单的示例代码:
import java.util.concurrent.BlockingQueue;
import java.util.concurrent.LinkedBlockingDeque;
import java.util.concurrent.Semaphore;
public class ThreadCommunication {
private BlockingQueue<Integer> queue;
private Semaphore semaphore;
public ThreadCommunication() {
queue = new LinkedBlockingDeque<>(1);
semaphore = new Semaphore(1);
}
public void sendData(int data) {
queue.offer(data);
semaphore.release();
}
public int receiveData() {
semaphore.acquire();
int data = queue.take();
return data;
}
}
在这个示例代码中,我们使用了阻塞队列(LinkedBlockingDeque
)来实现线程之间的通信。发送线程将数据添加到队列中,然后释放信号量(semaphore.release()
)。接收线程等待信号量,然后从队列中获取数据。
需要注意的是,在 Java 中,线程之间的通信可能会受到同步问题的影响,因此在实际应用中需要谨慎处理。此外,在处理并发问题时,需要使用适当的同步原语(如 synchronized
、volatile
等)来确保线程之间的安全。
领取专属 10元无门槛券
手把手带您无忧上云