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

Java 我可以在这个程序中实现线程以使它更快吗?,java,multithreading,swing,concurrency,Java,Multithreading,Swing,Concurrency,程序:平方数测试仪 它的作用:测试你输入的平方数 下面是应用程序的逻辑/流程图 打开/运行文件 显示JOptionPane,询问您要输入的最大数字 输入后,显示一个JFrame,其中包含您提出的所有问题 完成后,打开一个对话,询问是否要重试,并显示每个问题所用时间的图表 Source如果有人想看看我到目前为止得到了什么:根据您对过程的描述,似乎不是这样 当考虑并行计算时,需要考虑代码的哪些部分可以同时执行,并且如果这些操作具有较长的计算时间。您的过程似乎大部分是连续的,即您对用户输入做出响应,不

程序:平方数测试仪

它的作用:测试你输入的平方数

下面是应用程序的逻辑/流程图

  • 打开/运行文件
  • 显示JOptionPane,询问您要输入的最大数字
  • 输入后,显示一个JFrame,其中包含您提出的所有问题
  • 完成后,打开一个对话,询问是否要重试,并显示每个问题所用时间的图表

  • Source如果有人想看看我到目前为止得到了什么:

    根据您对过程的描述,似乎不是这样

    当考虑并行计算时,需要考虑代码的哪些部分可以同时执行,并且如果这些操作具有较长的计算时间。您的过程似乎大部分是连续的,即您对用户输入做出响应,不能充分利用他的思考时间

    考虑两种情况:

    • 假设准备问题所需的计算时间很长。用户输入后,您需要准备许多问题。
      • 顺序:你会让用户等到所有的问题都准备好了,然后在他回答时无所事事
      • 并行:您在用户回答问题时准备问题。当在后台添加问题时,“用户线程”将为下一个问题询问“问题准备”线程。“问题准备”线程就像是问题的缓冲区
    • 假设准备问题所需的计算时间总是短于用户回答问题所需的时间。在这种情况下没有区别,因为用户没有等待的时间-你在他思考的时候准备下一个(一个)问题,并且重复这样做,而不需要问题缓冲区
    有关Java和并行执行的更多信息,请参阅


    有关与“代码的并行度或质量”相关的加速信息,请参阅。

    您认为多线程如何提高应用程序的速度?输入的上限是多少?我不知道,这就是为什么我要问的。理论上,极限为整数.MAX_值。实际上,在值为46390(最大值的sqrt)之后会引发异常。但是,没有实际的最大界限(因为没有异常检查值是否太高或太低,我现在就要实现)。更新:我已经实现了我在上述评论中提到的内容。因此,我可以在处理输入后在线程中生成问题,并在用户思考时添加它们吗?这一点收益值吗?如果我没有,如果我仍然同步方法,是否会影响性能?第一个问题:是的。第二个问题:可能不是(我假设从用户的角度来看,这个过程是即时的)。第三个问题:从理论上讲,像并行一样编写顺序代码的性能并不差。我不确定在执行并发相关代码时JVM是否有一些小的开销。从程序员的角度(主观的)来看,并行代码通常更难管理(读取、维护等)。请看我对答案的编辑。好的,非常感谢。如果您已经检查过我的代码(或者没有检查过),您会推荐什么作为一个项目来帮助我开发并发性、异常处理和其他技能(如UI等)?我会阅读关于这些主题的教程,并遵循练习或至少是示例。我不知道你指的是什么样的项目,你不是在问你链接的项目吗?不管怎么说,异常处理是强制性的,你可以为它创建一个UI,甚至是做一些小事情的并发操作。我理解它们,我只是想在这之后做些事情。