【问题标题】:JAVA multithreading novice inquiry [closed]JAVA多线程新手查询[关闭]
【发布时间】:2012-02-08 03:12:12
【问题描述】:

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

1) 主 java 类将从 db 文件列表(集合 1)中查询以 ftp'​​d 到另一台服务器。

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

3) 类 2 应该对集合 1(子类 2)的每个记录(项目)执行三个处理。 (ftp put, ftp get(Return File), 根据Return File的数据更新db,并发送email给记录(item)的接收者)。

4) 子类 2 过程结束。

5) 第 2 类过程结束。

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



鉴于上述主要场景,可以处理的最大记录(项)只有 10 条,直到处理完所有记录(项)。

问题:

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

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

c) 对于子类 2,底层类(ftp、DB-Update 和 Email-sender)是否应该定义为可运行的?数据库更新过程取决于 FTP 获取返回文件。

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

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

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

【问题讨论】:

  • 如果您正在寻找“转储我的工作/家庭作业并让其他人为我做”网站,那么这不是它。这是“展示我的工作、我自己的答案和想法并提出特定问题”的网站。投票结束这个“问题”作为工作/家庭作业转储......除非原始发布者愿意编辑他们的问题并展示他们的劳动成果以及提出具体问题。
  • 主类始终是main 线程。如果需要,您可以在逻辑中生成其他线程。另外,花一些时间来预测问题的答案,这样您就不必一次问 5 个问题
  • @HovercraftFullOfEels,正如主题所暗示的,这是一个询问,而不是给我一个源代码请求。请保持开放的心态,因为不是每个人都像你一样知识渊博。
  • @MozenRath,感谢您的回复,我已经将主线程创建为线程,但是如果它应该是可运行实例而不是线程实例,我会感到困惑。
  • @HovercraftFullOfEels,很抱歉你这么想。虽然这个主题是为了验证我已经完成的工作,但正如我所表明的那样,我是这个多线程的新手。如果你被这个帖子冒犯了,我再次道歉。

标签: java multithreading runnable executorservice


【解决方案1】:

仅当我们希望在后台执行长计算任务时才使用线程。主任务始终是主线程。您可以从中生成其他线程实例。您可以使您的第二和第三类可运行并使用线程运行它们。在您的情况下,您需要等待线程完成,例如,仅在主线程中检索您的集合之后,您可以启动第二个线程,同样您应该等待第二个线程完成,然后再执行第三个线程

【讨论】:

    【解决方案2】:

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

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

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 1970-01-01
      • 2019-05-24
      • 1970-01-01
      • 2013-02-27
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多