Warning: file_get_contents(/data/phpspider/zhask/data//catemap/6/multithreading/4.json): failed to open stream: No such file or directory in /data/phpspider/zhask/libs/function.php on line 167

Warning: Invalid argument supplied for foreach() in /data/phpspider/zhask/libs/tag.function.php on line 1116

Notice: Undefined index: in /data/phpspider/zhask/libs/function.php on line 180

Warning: array_chunk() expects parameter 1 to be array, null given in /data/phpspider/zhask/libs/function.php on line 181
JAVA多线程新手查询_Java_Multithreading_Runnable_Executorservice - Fatal编程技术网

JAVA多线程新手查询

JAVA多线程新手查询,java,multithreading,runnable,executorservice,Java,Multithreading,Runnable,Executorservice,您好,我是多线程领域的新手,希望就以下场景寻求帮助: 1) 主java类将从数据库文件列表(集合1)中查询要通过ftp发送到另一台服务器的文件 2) Main类将调用另一个类(类2),该类将根据(集合1)的返回数据执行不同的进程 3) 类别2应针对集合1(子类别2)的每个记录(项目)执行三个过程。(ftp put、ftp get(返回文件),根据返回文件的数据更新数据库,并向记录(项目)的收件人发送电子邮件) 4) 子类2过程结束 5) 第2类过程结束 6) 在检索到新集合之前,主类仍然执行

您好,我是多线程领域的新手,希望就以下场景寻求帮助:

1) 主java类将从数据库文件列表(集合1)中查询要通过ftp发送到另一台服务器的文件

2) Main类将调用另一个类(类2),该类将根据(集合1)的返回数据执行不同的进程

3) 类别2应针对集合1(子类别2)的每个记录(项目)执行三个过程。(ftp put、ftp get(返回文件),根据返回文件的数据更新数据库,并向记录(项目)的收件人发送电子邮件)

4) 子类2过程结束

5) 第2类过程结束

6) 在检索到新集合之前,主类仍然执行



鉴于上述主要场景,在处理所有记录(项目)之前,最多只能处理10条记录(项目)。

问题:

a) 主类应该被视为线程还是可运行的,因为它只执行一次,并让它运行一整天?

b) 在第2项中,最好的多线程方法是什么?(执行器服务或线程或可运行)

c) 对于子类2,底层类(ftp、DB Update和Email sender)是否应定义为可运行?其中,DB更新过程依赖于FTP get返回文件

d) 对于子类DB Updater,它是否也可以实现为多线程?(例如,如果要更新的记录在2000年左右)

e) 如何使子类2的流程成为每个正在处理的项目的单个实体?
并在流程完成时向调用类(类2)发出信号

希望有人能为我的上述询问指出正确的方向。

非常感谢。

我可以看出您在这里担心两件事,Java有两件事需要解决:

  • 检查javadocs中的
    Thread.start()
    Thread.run()
  • 检查javadocs中的
    Executor
    ExecutorService

我相信你脑子里发生的很多事情都会通过这个解决的

我们只有在后台执行长时间的计算任务时才使用线程。主任务始终是主线程。你可以从中生成其他线程实例。你可以使你的第二类和第三类可运行,并使用线程来运行它们。在你的情况下,你需要等待对于要完成的线程(例如,只有在主线程中的集合重新评估之后),您可以启动第二个线程,同样,您应该等待第二个线程完成,然后再执行第三个线程

如果您正在寻找“转储我的工作/家庭作业并让其他人为我完成”站点,那么这不是它。这是“展示我的工作、我自己的答案、想法并提出具体问题”的网站。投票结束此“问题”作为工作/家庭作业转储。。。除非原始海报愿意编辑他们的问题,展示他们的劳动成果,并提出具体问题。主类始终是
main
线程。如果需要,可以在逻辑中生成其他线程。另外,花一些时间预测你的问题的答案,这样你就不必一次问5个问题go@HovercraftFullOfEels,正如主题所暗示的,它是一个查询,而不是一个给我一个源代码请求。请开明一点,因为并不是每个人都像你一样有知识。@MozenRath,谢谢你的回答,我已经将main创建为一个线程,但是我不知道它是否应该是一个可运行的实例而不是一个线程实例。@HoverCraftFullOfels,很抱歉你这么想。虽然这个主题是为了验证我已经做了什么,正如我所指出的,我是这个多线程的新手。如果你被这条线索冒犯了,我再次道歉。