草庐IT

任务队列

全部标签

java - 如何配置 spring 来执行重叠的 fixedRate 任务?

我正在尝试使用javaspring中的@Scheduled注释以固定速率执行任务。但是,如果任务慢于速率,默认情况下spring似乎不会以固定速率执行fixedRate任务。是否有一些设置可以添加到我的spring配置中以更改此行为?示例:@ServicepublicclassMyTask{@Scheduled(fixedRate=1000)publicvoiddoIt(){//thissometimestakes>1000ms,inwhichcasethenextexecutionislate...}}我有一个变通办法,但似乎不太理想。基本上,我只是用线程池替换默认的单线程执行器,然

java - 并发队列 - 一般问题(描述和用法)

我在理解并发队列的概念时遇到了一些困难。我了解队列是一种FIFO,即先到先得的数据结构。现在当我们添加并发部分时,我将其解释为线程安全(如果不正确,请告诉我)事情变得有点模糊。并发性是指各种线程可以添加到队列或从队列中删除(服务项目)的方式?并发是否为该操作提供了一种有序感?我将非常感谢对并发队列功能的一般描述。类似的帖子here并不像我希望的那样一般。还有并发优先级队列这种东西吗?它的用途是什么?非常感谢有关此主题的任何简短解释或有用链接。 最佳答案 BlockingQueue提供很少开销的概念有点误导。获取锁会调用相当大的开销。

java - 无锁队列中的这些行不是必需的吗?

下面是使用compareAndSet(在Java中)的无锁队列的一些代码:publicvoidenq(Tvalue){NodenewNode=newNode(value);while(true){Nodelast=tail.get();Nodenext=last.next.get();if(last!=tail.get())continue;//???if(next!=null){//improvetailtail.compareAndSet(last,next);continue;}if(last.next.compareAndSet(null,newNode)){//updatel

java - 线程池处理 'duplicate' 任务

我想并行执行一些不同的任务,但有一个概念,即如果任务已经排队或正在处理,则不会重新排队。我已经阅读了一些关于JavaAPI的内容,并提出了下面的代码,它似乎可以工作。任何人都可以阐明我使用的方法是否是最好的方法。任何危险(线程安全?)或更好的方法来做到这一点?代码如下:importjava.util.HashMap;importjava.util.concurrent.Future;importjava.util.concurrent.LinkedBlockingQueue;importjava.util.concurrent.ThreadPoolExecutor;importjava

java - 工作/任务窃取 ThreadPoolExecutor

在我的项目中,我正在构建一个Java执行框架,用于接收来自客户的工作请求。工作(大小不一)被分解为一组任务,然后排队等待处理。有单独的队列来处理每种类型的任务,并且每个队列都与一个线程池相关联。ThreadPools的配置方式使引擎的整体性能达到最佳。这种设计有助于我们有效地平衡请求的负载,并且大请求不会最终占用系统资源。然而,有时当一些队列为空并且它们各自的线程池处于空闲状态时,解决方案会变得无效。为了让它变得更好,我正在考虑实现工作/任务窃取技术,以便负载较重的队列可以从其他线程池获得帮助。然而,这可能需要实现我自己的执行器,因为Java不允许多个队列与线程池相关联,并且不支持工作

java - Gradle: war 任务有冲突的包含/排除

我正在尝试使用Gradle构建一个war文件,但我遇到了一个问题,即排除一个目录并包括另一个恰好具有相同名称但父目录不同的目录。请注意在下面的第一个代码示例中,css/都不是目录包含在最终的war中文件——我假设是因为Gradle认为我想排除名为css/的任何目录不管它的绝对路径。基本上我想排除src/main/webapp/css并包括build/tmp/css因为后者包含缩小的代码。我怎样才能做到这一点?我尝试过以各种方式指定绝对路径,但都没有成功。war{dependsOnminifyfrom('build/tmp/'){include('css/')}exclude('WEB-

[自研开源] MyData 数据集成的任务流程 v0.7.1

开源地址:https://gitee.com/LIEN321/mydata-blade详细介绍:MyData基于WebAPI的数据集成平台v0.7.0部署文档:用Docker部署MyDatav0.7.1使用手册:MyData使用手册v0.7.1交流Q群:430089673MyData后端结构MyData的后端由3个子服务组成,分别是管理服务、任务服务、业务数据服务;管理服务:通过项目、数据标准、应用API、环境的管理配置出同步业务数据的任务;任务服务:根据配置的任务定时调用应用API和数据服务实现业务数据的传输和存储;数据服务:封装业务数据的隔离机制和读写操作;依赖的组件:MySQL:存储管理

java - 使用 Spring 配置文件运行 gradle 任务(集成测试)

需要通过带有spring配置文件的gradle运行测试。gradlecleanbuild我添加了任务:taskbeforeTest(){doLast{System.setProperty("spring.profiles.active","DEV")}}test.dependsOnbeforeTest我的测试定义是:@RunWith(SpringRunner.class)@SpringBootTest@ActiveProfiles("TestProfile")publicclassSomeTest{但是这个结构对我不起作用。Gradle运行测试。 最佳答案

ScheduledThreadPoolExecutor 定时任务

目录ScheduledThreadPoolExecutor一、概述二、常用方法1、schedule方法2、scheduleAtFixedRate方法3.scheduleWithFixedDelay方法三、ScheduledExecutorService的创建方式ScheduledThreadPoolExecutor一、概述java中ScheduledExecutorService接口是基于线程池设计的定时任务类,每个调度任务都会分配到线程池中的一个线程去执行,也就是说,任务是并发执行,互不影响。其中的一个实现类是ScheduledThreadPoolExecutor(1)>ScheduledT

java - 在 Java 中连续处理异步队列的最佳方法是什么?

我很难弄清楚如何构建我的系统的最后一部分。目前我正在运行一个Tomcat服务器,它有一个响应客户端请求的servlet。每个请求依次将处理消息添加到异步队列(我可能会通过Spring或更可能使用AmazonSQS使用JMS)。事件的顺序是这样的:发送方:1.接受客户请求2.将一些数据添加到具有唯一ID的与此请求相关的数据库中3.在消息队列中添加一个代表本次请求的消息对象接收方:1.从队列中拉取一个新的消息对象2.展开对象并根据包含在msg对象中的信息从网站获取一些信息。3.发送电子邮件提醒4.使用已针对此请求完成操作的信息更新我的数据库行(相同的唯一ID)。我很难弄清楚如何正确处理接收