我可以在这个程序中实现线程以使其更快吗?

时间:2014-04-03 17:29:13

标签: java multithreading swing concurrency

程序:方数测试仪

它的作用:根据您输入的数字测试方形数字

这是应用程序的逻辑/流程图

  1. 打开/运行文件
  2. 显示要求输入最高编号的JOptionPane
  3. 输入后,显示一个JFrame,其中包含您提出的所有问题
  4. 完成后,打开一个对话框,询问您是否要重试并显示每个问题所用时间的图表。
  5. 来源,如果有人想看到我到目前为止:https://github.com/Injustice/SquareNumberTester

1 个答案:

答案 0 :(得分:2)

似乎不是您对程序的描述。

在考虑并行计算时,您需要考虑代码的哪些部分可以同时执行,以及这些操作是否有很长的计算时间。你的程序似乎主要是顺序的,即你回应用户输入并且不能充分利用他的思考时间。

考虑2个案例:

  • 假设准备问题所需的计算时间很长。您需要在用户输入后准备许多问题。
    • 顺序:你会让用户等到所有问题都准备就绪,然后在他回答时闲置。
    • 并行:您在用户回答期间准备问题。 "用户线程"会问问题准备"在后台添加问题的同时解决下一个问题。 "问题准备"线程就像问题的缓冲区。
  • 假设准备问题所需的计算时间总是短于用户回答的时间。在这种情况下,没有区别,因为用户没有等待时间 - 您在思考时准备下一个(一个)问题,并且在不需要问题缓冲的情况下重复执行此操作。

有关Java和并行执行的更多信息,请参阅tutorial on concurrency

有关加速相对于"代码的并行或顺序的信息",请参阅Amdahl's law