concurrency 相关问题

在计算机科学中,并发性是系统的属性,其中可以在重叠的时间段中执行多个计算。计算可以在同一芯片中的多个核上执行,在同一处理器上抢占时间共享线程,或者在物理上分离的处理器上执行。

嵌套CopyOnWriteArrayList默认是线程安全的吗?

假设我有以下代码: 类A类{ 最终整数 i; 最终字符串; 最终 CopyOnWriteArrayList l; A 类() { ... } } 类 B 类 { 最后在...

回答 1 投票 0

消息驱动通道适配器 - 消息并发处理

问题 我们有一个具有以下消息驱动通道适配器配置的遗留应用程序 问题 我们有一个具有以下消息驱动通道适配器配置的旧应用程序 <jms:message-driven-channel-adapter id="processRequest" destination="requestFromLoader" connection-factory="connectionFactory" max-concurrent-consumers="30" message-converter="xmlMarshalConverter" channel="jmsInChannel" error-channel="errorChannel"/> 使用此配置max-concurrent-consumers =“30”我们预计有30个并行消费者(processRequest-container-1到30)来消费消息,但在测试过程中我们发现每个消费者依次消费10条消息,Eg - processRequest-container-1 处理消息 1 到 10,然后创建 processRequest-container-2 并处理 11 到 20 等等.. 如果只有 2 个请求,这会导致第二条消息等待,即使还有 29 个其他消费者。 分辨率 我们添加了 max-messages-per-task="1",这似乎产生了正确的结果,但我们仍在使用大量消息进行测试。 <jms:message-driven-channel-adapter id="processRequest" destination="requestFromLoader" connection-factory="connectionFactory" max-concurrent-consumers="30" max-messages-per-task="1" message-converter="xmlMarshalConverter" channel="jmsInChannel" error-channel="errorChannel"/> 问题 我们通知日志中的消费者名称(processRequest-container-1)将达到2000或3000(processRequest-container-2546),并且不限于processRequest-container-1到processRequest-container-30,但在第一种情况下,没有 max-messages-per-task="1" 它没有超出 processRequest-container-30,这正常吗?或者我们需要做些什么吗? 在spring文档中max-messages-per-task =“1”被定义为每条消息要执行的任务,什么是任务以及最大并行消费者如何受此影响? 添加 max-messages-per-task="1" 正确还是我们遗漏/忽略了其他内容? 任何建议或评论都很好。预先感谢。 这个问题更多的是关于 Spring JMS,而不是 Spring Integration。 最好阅读用于上述 DefaultMessageListenerContainer 的 <jms:message-driven-channel-adapter> 的源代码和 Javadoc。 有一条有趣的评论可能可以解释您的行为: /** * Specify the maximum number of concurrent consumers to create. Default is 1. * <p>If this setting is higher than "concurrentConsumers", the listener container * will dynamically schedule surplus consumers at runtime, provided that enough * incoming messages are encountered. Once the load goes down again, the number of * consumers will be reduced to the standard level ("concurrentConsumers") again. * <p>Raising the number of concurrent consumers is recommendable in order * to scale the consumption of messages coming in from a queue. However, * note that any ordering guarantees are lost once multiple consumers are * registered. In general, stick with 1 consumer for low-volume queues. * <p><b>Do not raise the number of concurrent consumers for a topic, * unless vendor-specific setup measures clearly allow for it.</b> * With regular setup, this would lead to concurrent consumption * of the same message, which is hardly ever desirable. * <p><b>This setting can be modified at runtime, for example through JMX.</b> * @see #setConcurrentConsumers */ public void setMaxConcurrentConsumers(int maxConcurrentConsumers) { 因此,由于您不使用 concurrent-consumers="30" 来代替,因此您获得最多 30 个动态实例,并且它们的 id 确实增加了,这是正常的。 如果不指定max-messages-per-task="1",逻辑是这样的: if (this.taskExecutor instanceof SchedulingTaskExecutor ste && ste.prefersShortLivedTasks()) { if (this.maxMessagesPerTask == Integer.MIN_VALUE) { // TaskExecutor indicated a preference for short-lived tasks. According to // setMaxMessagesPerTask javadoc, we'll use 10 message per task in this case // unless the user specified a custom value. this.maxMessagesPerTask = 10; } } 或者你的taskExecutor不是那个SchedulingTaskExecutor(这确实是默认情况下),因此你的所有消息都由同一个消费者实例处理。 一些文档也在这里:https://docs.spring.io/spring-framework/reference/integration/jms/using.html#jms-mdp

回答 1 投票 0

如何将 AdMob `GADFullScreenContentDelegate` 转换为 Swift 6 并发

这与如何将 `VNDocumentCameraViewControllerDelegate` 转换为 Swift 6 并发类似,但有一个警告是新的,因此可能需要不同的解决方案。 我有以下代码: @

回答 1 投票 0

NextJS API 端点中的 NextJS 服务器操作使用情况 - 并发与否?

正如我通过实践了解到的:NextJS 服务器操作是同步的。 我想实现并发;我喜欢将其抽象化的语法;因此我创建了一个 NextJS API 端点,它具有

回答 1 投票 0

具有并发任务(可以限制)的单实例WCF服务

我正在尝试构建一个 WCF 服务 - 是单实例 允许客户端向函数发出多个请求(例如 StartJob) StarJob(request) 将请求“排队”到 TaskFactory(一分钟...

回答 1 投票 0

不使用Thread或ExecutorService的Java并发

有一项任务交给我去做,我已尽力但无法完成。任务是编写一个 Java 程序,该程序将生成煎饼,同时......

回答 1 投票 0

在java中设置按钮单击的延迟?

我在 JFrame 中有一个保存按钮;单击保存时,“保存”文本设置为“保存...”;我需要在延迟 10 秒后将该文本设置为“已保存”。在 java 中这怎么可能? 请帮忙... t...

回答 4 投票 0

某些情况下会出现陈旧元素引用异常

我正在进行性能测试,以测量使用 Selenium 和 Java 和 TestNG 的航班搜索应用程序的供应商结果的响应时间。我已经利用了调用计数和线程

回答 1 投票 0

Lambda 预置并发显示 0 个可用。但我没用过

我使用我的 AWS 账户已经超过 4 个月了。现在,我需要创建一个具有预配置并发性的 Lambda 函数。但是,它给出了以下错误: ``允许的最大规定...

回答 1 投票 0

PHP:如何以非阻塞方式调用函数?

我看到了关于这个问题的其他几个问题,但没有明确的答案。 我有一个从 CLI 运行的 PHP 文件(必须是 PHP,不能是 cron 或其他东西),我必须多次调用相同的函数...

回答 3 投票 0

Go 中的性能:Mutex 与 RWMutex

Go 中有两种类型的互斥体:Mutex 和 RWMutex Mutex 提供 func Lock() 和 func Unlock()。 RWMutex 提供这些函数以及 func RLock() 和 func RUnlock()。 据我了解,我们...

回答 1 投票 0

关闭 Go 通道后无法读取内容

我正在学习 Go 的并发性,并且一直面临构建一个简单的并发网络爬虫的问题。爬行发生在一个 goroutine(爬行)中,该 goroutine 被调用的次数与 U 的数量一样多......

回答 1 投票 0

如何解释仅在虚拟线程中发生的死锁?

我在使用基于虚拟线程的执行器时遇到了死锁。当我使用 50 个线程但不是 20 个线程时会出现此问题。当我不使用虚拟线程时,此问题不会出现...

回答 1 投票 0

Jmeter并发调用

我需要在一秒内触发同一个 API 30 次,其中只有 20 次会成功触发,剩下的会失败,因为如果同时发送,我们允许一次触发 20 个请求。 ...

回答 1 投票 0

GO Cond - wg.Done 之后的 fmt.Println 最终陷入死锁

无法理解golang中的这种死锁情况,我有下面的带有pub和sub模式的go代码 包主 进口 ( “FMMT” “同步” ) 函数主() { 条件:...

回答 1 投票 0

Google Cloud Run:解释并发性的 CPU 利用率指标

在有关并发的 GCR 文档中,建议允许并发连接,除非您预计每个请求都会耗尽 CPU/RAM (https://cloud.google.com/run/docs/about-concurrency#

回答 2 投票 0

如何在 Swift 6 中将 Vision 文本识别结果标记为 Sendable

我有以下代码。它只需运行 Vision API 即可从图像中获取文本。我使用非常简单的 GCD 将繁重的 Vision 操作分派到后台队列,然后将其分派回...

回答 1 投票 0

Hazelcast 竞争条件?

我们运行一个由 3 台机器组成的 Hazelcast 集群,每台机器都有相同的进程实例。他们共享一个名为 waitingMap 的 IMap。在 activateAnotherBatch() 方法中,我们检查是否为空...

回答 1 投票 0

原子类型可以赋给另一个原子变量的值吗?

在《Concurrency In Action》中指出: 原子类型上的所有操作都定义为原子,并且赋值 复制构造涉及两个对象。一次操作对两个 不同的物体...

回答 1 投票 0

将未知大小的文件上传到S3的最佳策略

我有一个服务器端应用程序,它运行大量图像URL并将图像从这些URL上传到S3。 文件通过 HTTP 提供。我使用 InputStream 下载它们,我得到...

回答 1 投票 0

© www.soinside.com 2019 - 2024. All rights reserved.