【问题标题】:Concurrent Calculations in JavaJava 中的并发计算
【发布时间】:2013-11-04 12:06:43
【问题描述】:

我有一点功课,想要一点帮助。我试图让我的计算机一次同时计算 5 个总和。我知道我应该使用线程,但不确定实现这一点的最佳方法。

抱歉没有在这里发布代码,这是我目前所拥有的。

主要:

package CoddingEx;

public class Main
{
    public static void main(String args[]) {
        (new Thread1()).start();
        (new Thread2()).start();
    }
}

线程 1:

package CoddingEx;
public class Thread1 extends Thread {

    public void run() {
        int answer = 0;
        int input = 5;

        answer = input*5;
        System.out.println("Value of calculation 1: " + answer);
    }

}

线程 2:

package CoddingEx;

public class Thread2 extends Thread {

    public void run() {
        int answer = 0;
        int input = 5;

        answer = input/5;
        System.out.println("Value of calculation 2: " + answer);
    }

}

这是前 2 次计算,在我确定这是正确的方法之前,我会坚持使用这 2 次。我的目标是让所有线程同时计算和完成。

谢谢

【问题讨论】:

  • 你试过了吗?
  • 你读过并发和线程的章节吗?
  • this link 可能会帮助哥们:)
  • 我建议编写计算单个总和的方法,测试它,让它工作,然后担心五个线程同时运行。
  • @PeterLawrey 我认为这只是让我们习惯线程的任务

标签: java concurrency


【解决方案1】:

如果你使用 JDK 7+,你应该使用 Fork/Join 框架。我用过它,它的主要优点是可扩展性,你可以学习如何并行思考。此外,与 F/J 框架相比,Threads 似乎是低级的。

详情:http://gee.cs.oswego.edu/dl/papers/fj.pdf

起点:http://www.vogella.com/articles/JavaConcurrency/article.html

【讨论】:

    【解决方案2】:

    您需要创建一个自定义线程来接受要加在一起的数字。在run() 中,您进行加法并将总和存储在某处。

    由于您需要五个线程,因此您需要创建此线程的五个实例并在它们上调用start()

    【讨论】:

    • 为什么?为什么是线程?可调用的要好得多,它是一个可运行的类固醇(可以返回任何你想要的,即结果)。
    • 我没用过callable。需要调查一下
    猜你喜欢
    • 1970-01-01
    • 1970-01-01
    • 1970-01-01
    • 2016-09-02
    • 2015-06-14
    • 1970-01-01
    • 1970-01-01
    • 2016-08-23
    • 1970-01-01
    相关资源
    最近更新 更多