用于理解 Java 中的多线程的简单任务
Posted
技术标签:
【中文标题】用于理解 Java 中的多线程的简单任务【英文标题】:Simple Task for understanding Multithreading in Java 【发布时间】:2020-05-02 03:21:54 【问题描述】:我有几个关于 java 线程的问题。
为了更好地理解,我试图用线程解决一些简单的任务。我有一个获取int value
和int tCount
并返回long result
的方法。它应该做的只是计数,从一个开始,然后将每个添加到result
。现在tCount
变量告诉我应该用多少个线程来做。示例:
myMethod(10, 1)
应该在单个线程中计算:1 + 2 + 3 + 4 + 5 + 6 + 7 + 8 + 9 + 10
并返回 long result
。
myMethod(10, 2)
应该计算相同,但可以这样说:
thread1
计算 1 + 3 + 5 + 7 + 9
thread2
计算 2 + 4 + 6 + 8 + 10
最后应该将两个结果添加到long result
和result
应该返回。
当我尝试实现它时,我有不同的方法。例如对于匿名类(总是有问题应该是最终的变量),但没有什么能接近工作。
你有什么想法?
创建一个额外的class
extends Thread
或实现Runnable
?
您将如何创建分配给您的方法的线程数量?
您会在哪里实现哪个变量,以便在需要时访问它?
那么线程管理呢?变量结果不应该被不同的线程同时使用,对吧?
非常感谢!
【问题讨论】:
我首先想到的是CompletableFuture
s。你可以阅读他们here。
请贴出一些你试过的代码。
extends Thread
与 implements Runnable
是一个在本网站上被多次询问和回答的问题。使用搜索功能查找答案。
Re,“您将在哪里实现哪个变量,以便您可以在需要时访问它?”如果这是您需要帮助的事情,那么我建议您在深入学习线程之前花更多时间学习 Java 语言,并学习面向对象的设计。线程是一个具有挑战性的主题。在用您不完全理解的语言编写代码时尝试理解线程并没有任何意义。
【参考方案1】:
可以创建两个线程,其中一个线程执行并进入等待状态,然后唤醒另一个线程,另一个执行完后进入等待状态,然后唤醒另一个线程。像这样交替执行。
【讨论】:
以上是关于用于理解 Java 中的多线程的简单任务的主要内容,如果未能解决你的问题,请参考以下文章