等待Java中任务执行的线程池

时间:2019-05-22 09:38:02

标签: java multithreading thread-safety threadpool

我想在java中创建一个线程池代码,其中task将等待,直到task中调用的函数完成。我已经看过很多例子,但到目前为止还无法实现我的目标。

public void ConfigureServices(IServiceCollection services)
{
    services.AddDataProtection().PersistKeysToFileSystem(new DirectoryInfo(@"our-secret-path-goes-here"));
}

此函数的完整想法是调用一个函数process(),它是mainMethod类的方法。所以我想并行运行10个线程,但是第11个任务应该仅在10个任务中的任何一个完成执行时才开始,因此我需要实现wait函数来使任务完成。有任何建议。

1 个答案:

答案 0 :(得分:0)

您的带有task.wait()的同步块只不过阻止了循环,因为在任何时候都不会调用notify方法。 因此,您首先需要删除它。

第二,您的处理方法不会从任何多线程中受益,因为它是在构造函数中调用的,并且对象创建是由主线程完成的。 解决方案是将处理方法移到运行方法内。

您已正确地为线程池分配了一个限制,以允许10个并发任务运行。

注意:不能保证订购!例如,任务11可能在任务8之前运行。