用于理解 Java 中的多线程的简单任务

Posted

技术标签:

【中文标题】用于理解 Java 中的多线程的简单任务【英文标题】:Simple Task for understanding Multithreading in Java 【发布时间】:2020-05-02 03:21:54 【问题描述】:

我有几个关于 java 线程的问题。

为了更好地理解,我试图用线程解决一些简单的任务。我有一个获取int valueint 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 resultresult 应该返回。

当我尝试实现它时,我有不同的方法。例如对于匿名类(总是有问题应该是最终的变量),但没有什么能接近工作。

你有什么想法?

创建一个额外的class extends Thread 或实现Runnable? 您将如何创建分配给您的方法的线程数量? 您会在哪里实现哪个变量,以便在需要时访问它? 那么线程管理呢?变量结果不应该被不同的线程同时使用,对吧?

非常感谢!

【问题讨论】:

我首先想到的是CompletableFutures。你可以阅读他们here。 请贴出一些你试过的代码。 extends Threadimplements Runnable 是一个在本网站上被多次询问和回答的问题。使用搜索功能查找答案。 Re,“您将在哪里实现哪个变量,以便您可以在需要时访问它?”如果这是您需要帮助的事情,那么我建议您在深入学习线程之前花更多时间学习 Java 语言,并学习面向对象的设计。线程是一个具有挑战性的主题。在用您不完全理解的语言编写代码时尝试理解线程并没有任何意义。 【参考方案1】:

可以创建两个线程,其中一个线程执行并进入等待状态,然后唤醒另一个线程,另一个执行完后进入等待状态,然后唤醒另一个线程。像这样交替执行。

【讨论】:

以上是关于用于理解 Java 中的多线程的简单任务的主要内容,如果未能解决你的问题,请参考以下文章

java的多线程:线程基础

Java的多线程有啥用处

如何理解python的多线程编程

Java中的多线程

java 多线程

Java的多线程