草庐IT

数仓任务

全部标签

java - 使用 JavaFX 任务正确执行多线程和线程池

我有一个选项供用户从FileChooser提交多个文件以供某些代码处理。结果将是读取文件的IO,然后是对存储数据的实际繁重计算。允许用户选择多个文件,并且由于文件处理不依赖于任何其他选择的文件,这让我的生活更容易处理线程。此外,用户需要有一个按钮列表,每个按钮对应一个要取消的任务,以及一个“全部取消”按钮。因此,我必须考虑选择性或集体终止一个或所有任务的能力。最后一个要求是,我不会让用户打开大量文件来阻塞系统。因此,我设计了一个线程数有限的线程池(假设我将任意数量的线程限制在4个)。我不确定如何正确地设置这一切。我有我需要做的事情的逻辑,但使用正确的类是我遇到的问题。我检查过thisr

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())