java - Java中的生产者消费者问题

标签 java multithreading asynchronous

public class SomeAdaptor implements SomeListener {

    public ConcurrentHashMap<String, Double> pendingRFQ; 

    @Override
    public void run() {
       pendingRFQ.put(response.getId(), price);
    } //first run method

    @Override
    public void run() {
         Double price = pendingRFQ.get(quoteEvent.getId());
         if (price != null)
            System.out.println("ORDER TO Market.....");
    } //2nd run method

我遇到一些线程问题。当我尝试在第二个 run() 方法中提取价格时,pendingRFQ map 不是最新的。我可以在第二个 run() 方法中执行哪些技术来确保我正在查找的值存在?或者我怎样才能让它等到它进来?

最佳答案

Map 替换为 BlockingQueue 并在第二个线程中使用 poll() 等待输入。

关于java - Java中的生产者消费者问题,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/19429628/

相关文章:

node.js - 在 Node 异步系列 block 中执行不会等待回调触发

c# - 在 C# 中锁定静态方法

PHP 线程和高延迟文件访问(例如;FTP)

java - 调用作业的区别

具有多个对象/锁的 Java 同步

C# 控制台应用线程?

JavaScript - 在处理 ajax 回调之前完成执行

asp.net - 是否有任何理由“不”在每个应用程序中实现异步 ASP.NET 网页?

java - 获取对象的单个实例

java - 如何在 Nashorn 中调用带有参数的匿名函数?