gpt4 book ai didi

java - 何时有效地使用线程

转载 作者:行者123 更新时间:2023-12-01 12:09:23 24 4
gpt4 key购买 nike

这个问题源于我对这个问题的实际经验不足。我不会撒谎,这是一个新手但又很重要的问题,我一直不太愿意问。在将此视为主观之前,我恳请您阅读整篇文章。

我已经阅读了很多关于线程的内容,特别是在Java中,但我自己从未真正使用过它们。我知道必须使用它们来最大限度地提高应用程序的效率,但我从来不知道何时或在某种程度上如何使用它们。

因此,我决定创建一个数学测验应用程序,包括 GUI、高分系统等 - 在主菜单中,我的菜单栏带有一个复选框菜单项,用于切换用户是否希望使用该应用程序是否有特定主题。

enter image description here

显然,我希望在其框架的生命周期内不断检查此选项。将所有这些因素放在一起让我想知道是否应该在框架类中创建一个线程来连续检查而不影响其外部的任何内容。

<小时/>

这是我的问题。这是选择使用线程的理想场景吗?如果是,使用它们可能会出现什么问题?

如果没有,我可以问为什么不以及我可以在我想要的应用程序中使用它们吗?

<小时/>

我还想指出的是,是的,我已经阅读了大量有关线程的文章和小书籍。然而,在这门学科上自学的唯一方法就是通过实践来学习。希望您能理解。

最佳答案

根据您用来创建 GUI 的 ui 框架,已经存在某种线程,可以处理所有用户操作、呈现控件等。因此,在这里执行您想要的操作的通常方法是在按钮上实现回调操作,当用户单击按钮时将调用该回调操作,而不是在线程中定期检查按钮状态。

使用线程的更好例子可能是并行计算之类的东西。例如,假设您想要计算 10 个(或者可能是 1000 个?)大文件中的单词总数。一种方法是逐一打开这些文件,读取并计数。或者,您可以实现一个通用作业,它知道如何计算单个文件中的单词数。然后,创建一个线程池(您不希望 10000 个线程同时运行,固定大小的池将是一个更好的主意)和需要处理的文件队列。池中的每个线程都会从队列中选取下一个项目,对给定文件中的单词进行计数,将数字放入输出队列中,然后继续处理下一个输入项目,除非队列为空。

然后主线程会将所有文件名放入输入队列中,并轮询输出队列中的数字,并将它们全部加在一起。当所有线程完成并且输出队列为空时,您将获得最终计数。

这比逐个读取文件要快,特别是如果您的程序有多个可用的 CPU 核心(但即使没有,仍然如此,因为您的读取可以并行发生)。

有意义吗?

关于java - 何时有效地使用线程,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/27347042/

24 4 0
Copyright 2021 - 2024 cfsdn All Rights Reserved 蜀ICP备2022000587号
广告合作:1813099741@qq.com 6ren.com