我的应用程序收到大量传入的 HTTP 请求。在每个请求的标头中,都有一个键值对。
说出标题1=应用程序1
值App1不断变化。
所以接下来它可以是App2、App3等等。
.但是,这些值可以按任何顺序继续出现。我需要处理竞争条件,其中如果出现 App1 的多个请求,我获得
reentrantreadwritellock
在App1上。同时,如果我收到对App2的请求,我将获取App2的重入读写锁。这两个锁需要相互排斥,否则我将遇到性能瓶颈,除非执行App1逻辑,否则App2将不会被执行。
我想做的是,如果有多个对App1的请求,那么他们必须等待。同时,如果接收到对App2的请求,则它将与当前App1请求并行执行。基本上是基于唯一值进行同步。事实上,我一无所知。感谢指导。另外,我不能使用synchronized,因为它会导致性能瓶颈
您可以使用 ConcurrentMap
将请求键映射到锁,例如:
ConcurrentMap<String, ReentrantLock> locks = ...
ReentrantLock lock = locks.computeIfAbsent(key, k -> new ReentrantLock());
lock.lock();
// do work
lock.unlock();
特别是Java类不是我自己的(它是一个依赖项),所以我不能修改它。作者对类的想法是使用Builder模式构造对象,并且没有提供默认的构造函数。 为了避免这个问题,我想我需要创建一个适配器类。然后,我将通过使用序列化的适配器对象并填充构建器来构建我的对象。 有没有更干净的方法可以做到这一点?如果ObjectMapper提供了从流读取到特定对象的方法,我就可以使用生成器生成一个空对象,然后用Jacks
我需要一个不可重入的读写锁,因为锁可能由获取它的线程以外的线程释放。(我意识到这一点时,我开始间歇性地获取非法监视器状态异常。) 我不确定不可重入是否是正确的术语。ReentrantLock允许当前持有锁的线程再次获取它。我不想要这种行为,因此我称之为“不可重入”。 上下文是我有一个使用线程池的套接字服务器。每个连接没有一个线程。请求可能由不同的线程处理。客户端连接可能需要在一个请求中锁定,在另一
我正在尝试使用Android Studio作为IDE和Java作为编程语言与温度计BLE设备进行交互。使用智能手机上的应用程序,我发现了该设备在运行过程中暴露的服务:有很多通用服务/特性和一个自定义服务。 首先,我试着阅读 健康温度计服务(UUID=00001809-0000-1000-8000-00805F9B34FB) 从服务列表中恢复特征并访问其描述符: 在这种情况下,我可以看到测量的结果在
我在学习Java中的重入锁定。需要一定的澄清这个概念,它实际上是如何工作的。下面的片段我所理解的是:
问题内容: 我有一个Excel工作表,它在某些单元格中已经有一些值。 对于前:- 我希望大熊猫写特定的单元格而不接触任何其他单元格,工作表等 这是我尝试的代码。 但是,此代码将删除较旧的单元格值。 我已经提到过:-如何在不覆盖数据的情况下(使用熊猫)写入现有的excel文件? 但是此解决方案不起作用。 问题答案: 我无法使用熊猫来完成我在问题中提出的要求,但是可以使用来解决它。 我将编写一些代码片
我是CSS网格主题的新手,我在网格的帮助下为一个网站创建了一个标题,我创建了带有徽标的标题、导航栏、搜索栏、带有网格的按钮 现在,最后两个属性对齐项目和对齐项目适用于所有ie,用于徽标、导航栏、搜索栏和按钮。我的问题是:我想覆盖这个justify items:center属性,以便仅对navBar的items:flex start进行对齐。那么谁能帮我? 以下是标题的屏幕截图: