我正在编写一个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/