在我的服务,我需要有ň上ň不同的目录(ñ变为1〜8)运行的东西,不同的线程。春@asynch线程并发共享资源
我需要执行ķ不同的任务(ķ进入为1〜10000),每个任务被绑定到单个目录,我需要在N1目录执行K1任务只有当n1上没有活动线程。
我是新来的春天,我想用@Async注释,我已经不知道如何设置池在这种情况下。
for(int task = 1; task<=1000;task++){
executeAsynchMethod(directoryNumber);
}
executeAsynchMethod应保持空闲状态,直到同一目录中没有其他任务。
UPDATE: 例如: 的executeAsynchMethod开始在每一个可用线程:
线程1 - >适用于目录1
线程2 - >适用于目录2
...
threadn - >适用于目录ñ
只要线程完成工作,它就会“释放”它的目录,并且我希望在这个目录上运行一个任务。
thread7 - > directory7是免费
thread7(或其他空闲线程) - >开始directory7新任务
你可以预先通过他们必须运行的目录来分割任务,然后依次运行它们吗? – jny
不可以,因为任务可以有非常不同的执行时间(从10秒到10分钟),并且我希望在整个执行过程中所有可能的线程都处于活动状态。 我甚至不知道这是较长的任务:d – Jacopo
但是,如果有关于N1目录X1的任务,执行时间将至少需要X1×持续时间,无论你做什么。但是,如果一些其他的任务将花费更少的时间,'ThreadPool'将确保下一个任务将被释放出来的任务得到执行。 – jny