单独的进程,每个进程在多线程JAVA中运行

单独的进程,每个进程在多线程JAVA中运行,java,multithreading,process,scheduled-tasks,Java,Multithreading,Process,Scheduled Tasks,我有4个独立的过程,需要一个接一个地进行 第一道工序 第二道工序 第三道工序 第四过程 因为每个进程都是相互连接的,所以每个进程都应该在完成之前一个接一个地运行 每个进程都有自己的可变长度,随着程序数据输入的增长,可变长度也会不同 但有些草图是这样的 程序运行 第一个过程-持续10秒 第二个进程-有300个HTTP get请求,持续3分钟 第三个进程-有600个HTTP get请求,持续6分钟 第四个过程-持续1分钟 这个程序是用java编写的 谢谢你的回答 java API中没有针对您的用例的

我有4个独立的过程,需要一个接一个地进行

第一道工序 第二道工序 第三道工序 第四过程

因为每个进程都是相互连接的,所以每个进程都应该在完成之前一个接一个地运行

每个进程都有自己的可变长度,随着程序数据输入的增长,可变长度也会不同

但有些草图是这样的

程序运行

第一个过程-持续10秒

第二个进程-有300个HTTP get请求,持续3分钟

第三个进程-有600个HTTP get请求,持续6分钟

第四个过程-持续1分钟

这个程序是用java编写的


谢谢你的回答

java API中没有针对您的用例的并发支持,因为您所要求的是与并发相反的。您有一组四个相互依赖的操作,需要按特定顺序运行。您只需要,而且可能只应该使用一个线程来正确处理这种情况

根据操作的复杂程度,将每个操作放在自己的方法或类中是合理和谨慎的


如果坚持使用多个线程,那么主线程应该维护一个可运行的列表。遍历列表。从列表中弹出第一个runnable,为该runnable创建一个新线程,启动该线程,然后在该线程上调用join()。主线程将阻塞,直到runnable完成。循环将按顺序引导您完成所有可运行项。同样,没有充分的理由这样做。可能有,也可能没有不好的原因。

如果进程是连续的,为什么不简单地实现它,让每个完成的进程调用下一个进程呢?听起来像是一个shell脚本/批处理文件的作业。@SnakeDoc a)你误用了“耦合”(请参见此处:)和b)他特别指出“在他完成之前,每个过程都应该一个接一个地运行“@alfasin OP可能不需要检查流程是否完成。。。完成后,它将返回到调用方法。这里不需要实现线程,这是一个顺序逻辑。这个运行,然后这个,然后那个,等等。我同意@SnakeDoc。这是4个不同的流程,我们不一定需要对它们进行更改来调用下一个流程。我们可以简单地在它上面写一个包装器,一个接一个地调用它。包装器可以是shell脚本或java代码。你的想法?