java - 如何使用多线程维护异步操作的任务顺序

标签 java multithreading

我正在编写一个java应用程序,其中中央数据结构将根据外部系统的请求和相应响应进行更新。 我如何确保不存在竞争条件?下面是我的实现方式。

我从 GUI 接收请求,对其进行处理并将其存储在 hashmap 的 hashmap 中,然后将请求转发到外部系统,我将异步获得响应。当我收到基于我之前发送的某个 id 的响应时,我会更新数据结构(hashmap 的 hashmap)

我创建了一个线程来处理来自 GUI 的请求,另一个线程用于处理来自外部系统的响应。 我创建了 2 个 linkedblockingqueues - 一个用于请求,另一个用于响应

我正在使用执行程序服务来创建多个线程用于请求和响应。 如何确保事情按顺序执行? 这是一个订单管理系统,我不希望在发送新订单之前发送修改。

最佳答案

使用Hastable,它是Map的同步实现。

同步实现将防止多个线程同时访问它。

https://docs.oracle.com/javase/8/docs/api/java/util/Hashtable.html

关于java - 如何使用多线程维护异步操作的任务顺序,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/46652916/

相关文章:

multithreading - 如何在 Linux (Kubernetes) 上解决 ASP.NET Core 中的线程不足问题?

C# 垃圾收集器、线程和编译器/抖动优化

java - 尝试在 if 语句内暂停程序执行 (Swing)

java - 将 JLabels 的 ArrayList 添加到 JPanel 中

java - 从 Ping 统计数据中提取数据的正则表达式没有输出。如何修复它?

java - Byteman - 跟踪给定包中的所有类和方法

c++ - 当我们已经有一个通知变量时,为什么要使用 condition_variable?

java - 从 JPEG 图像读取数据

java - 如何使用多线程允许多个客户端连接到服务器?

c++ - Qt::Concurrent 与成员函数映射