草庐IT

多任务

全部标签

java - 如何实现 ExecutorService 来轮流执行任务?

我正在使用java.util.concurrent.ExecutorService与fixedthreadpool执行任务列表。我的任务列表通常在80-150左右,并且我已将随时运行的线程数限制为10,如下所示:ExecutorServicethreadPoolService=Executors.newFixedThreadPool(10);for(Runnabletask:myTasks){threadPoolService.submit(task);}我的用例要求即使已完成的任务也应该重新提交给ExecutorService但只有当所有已经提交的任务时才应该再次执行/获取服务/完成

java - 无条件地执行 Ant 中的任务?

我正在尝试定义一个任务,该任务在目标完成执行时发出(使用回显)一条消息,无论该目标是否成功。具体来说,目标执行一个任务来运行一些单元测试,我想发出一条消息,指示结果可用的位置:...Testscomplete.Resultsavailablein${results}不幸的是,如果测试失败,则任务失败并且执行中止。因此,只有在测试通过时才会输出消息——这与我想要的相反。我知道我可以把任务放在任务之前,但这会让用户更容易错过这条消息。我尝试做的事情可行吗?更新:事实证明我很笨。我的任务中有haltOnFailure="true",这解释了我所看到的行为。现在的问题是,即使测试失败,将其设置

Java - 停止 ExecutorService 中的所有任务

我有一些执行器服务可以安排本地任务,例如读取文件、连接到数据库等。这些进程会进行大量的日志记录,这是基于有很多线程并发运行的事实,这是很广泛的,写他们自己的东西进入日志。现在,在某个时间点可以引发异常,它到达捕获所有异常的main方法。然后我将关闭所有服务并取消每项任务,希望阻止所有进一步的消息进入日志。不幸的是,在我关闭所有内容后,这些消息仍然出现...有什么想法吗?更新:这是一些代码publicclassScheduler{privatefinalExecutorServiceservice;privatefinalConcurrentMap>cache;...publicvoid

java - ant 任务将属性文件复制到 java 构建目录中的相应位置

好吧,我被难住了。我有一个Java树,它看起来像一个非常典型的EclipseJava构建:myprojectsrccomexampletest//Javafilesincom.example.testherebincomexampletest//Compiledclassfileswillgohere现在我在myproject/src/com/example/test中有一个MyClass.properties文件以及源Java文件。如何编写适当的ant任务以将源树中所有已更改的.properties文件复制到构建(myproject/bin)树中的相应位置?(其中较简单的一半是进行实

java - 使用 ThreadPoolExecutor 的 Activity 任务数

我正在使用ThreadPoolExecutor在我的Java应用程序中执行任务。我有一个要求,我想在执行程序队列中的任何时间点获取队列中Activity任务的数量。我抬头看了看javadoc对于ThreadPoolExecutor并找到了两个相关方法:getTaskCount()和getCompletedTaskCount()。根据文档,我可以分别从上述两种方法中获取计划任务数和已完成任务数。但是我无法找到在任何时间点获取队列中Activity任务数的解决方案。我可以做类似的事情:getTaskCount()=getCompletedTaskCount()+failedtasks+ac

java - Ant 和可用任务——如果某些东西不可用怎么办?

当我使用该任务时,该属性仅在资源(例如文件)可用时才设置为TRUE。如果不是,则该属性未定义。当我打印属性的值时,如果资源可用,它会给出true,否则只会打印属性名称。如果资源不可用,是否有办法将属性设置为某个值?我曾尝试在可用检查之前明确设置该属性,但随后Ant提示:[available]DEPRECATED-usedtooverrideanexistingproperty.[available]Buildfileshouldnotreusethesamepropertynamefordifferentvalues. 最佳答案 您

java - 如何顺序执行ExecutorService中的任务?

我有三个连接的线程,即第二个线程在第一个死后执行。这是我的代码:publicclassMain{publicstaticvoidmain(Stringargs[])throwsException{finalThreadthrdA=newThread(()->System.out.println("Message1"));finalThreadthrdB=newThread(()->System.out.println("Message2"));finalThreadthrdC=newThread(()->System.out.println("Message3"));thrdA.sta

java - 修复了线程池线程阻塞,当提交了足够多的任务时

我有一个流程需要并行计算许多小任务,然后按任务的自然顺序处理结果。为此,我进行了以下设置:一个简单的ExecutorService和一个阻塞队列,当Callable提交给执行程序时,我将使用它来保持返回的Future对象:ExecutorServiceexec=Executors.newFixedThreadPool(15);LinkedBlockingQueue>futures=newLinkedBlockingQueue>(15*64);一些调试代码,用于计算提交的数量和已处理的任务数量,并定期将它们写出来(注意processed在任务代码本身的末尾递增):AtomicLongpr

java - 从任务本身重新提交/安排任务 - 这是一个好习惯吗?

考虑我们有一个预定的执行程序服务:ScheduledExecutorServicethreadPool=Executors.newScheduledThreadPool(...);对于某些逻辑,我们希望重试任务执行。以下方法对我来说似乎很奇怪,但我不明白为什么:threadPool.submit(newRunnable(){@Overridepublicvoidrun(){//...if(needToBeScheduled()){threadPool.schedule(this,delay,TimeUnit.MINUTES);}elseif(needToBeResubmitted())

java - 使用 <ant> 任务调用的构建文件会重置调用者的日志记录配置

两个项目:产品(项目-A)和A的汽车基准测试项目(项目-B)。在B的构建文件中,我们需要调用A的构建文件来运行构建和bundle-with-app-server过程,如下所示:而且,在项目B中,我们有很多使用java.util.logging(JDK日志记录框架)输出消息的Ant任务。问题是,在该行之后,所有jdk记录器输出都消失了。通过调试,我发现,在项目A的构建文件的初始化过程中,项目A中的一个静态定义的东西会运行LogManager.readConfiguration(InputStream)。,它加载一个配置文件,该文件仅包含单个类的记录器配置。并且在readConfigura