JAVA多线程新手查询

时间:2012-02-08 03:12:12

标签: java multithreading runnable executorservice

美好的一天,我是多线程领域的新手,并希望就下面的场景寻求帮助:

1)主java类将从db文件列表(Collection 1)查询到另一台服务器的ftp。

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

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

4)子类2过程结束。

5)第2类过程结束。

6)主类仍然执行,直到检索到新的Collection。



鉴于上面的主要场景,可处理的最大记录(项目)仅为10,直到处理完所有记录(项目)。

问题:

a)Main类应该被认为是一个线程还是一个runnable,因为它只执行一次并让它运行一整天?

b)在第2项中可以做的最佳多线程方法是什么? (ExecutorService或Thread或Runnable)

c)对于Sub Class 2,是否应将基础类(ftp,DB-Update和Email-sender)定义为runnable?数据库更新过程依赖于FTP获取返回文件。

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

e)如何使子类2的过程成为每个正在处理的项目的单个实体?
当过程已经完成时,发出呼叫类(类2)的信号。

希望有人能就我上面的询问指出正确的方向 非常感谢你。

2 个答案:

答案 0 :(得分:1)

我们只在我们希望在后台执行长计算任务时才使用线程。主任务总是主线程。你可以从中生成其他线程实例。你可以使你的第二和第三类可运行并使用一个线程来在你的情况下你需要等待线程完成,例如只有在你的主线程中恢复你的集合后,你可以启动第二个线程,同样你应该等待第二个线程完成之后再做第三个线程< / p>

答案 1 :(得分:0)

我可以看到你在这里担心的两件事,Java有两件事要解决它们:

  • 检查Thread.start()Thread.run()
  • 的javadoc
  • 检查ExecutorExecutorService
  • 的javadoc

我相信你头脑中会发生的很多事情都会被这个

解决