面试问题 - 使用 Java 线程进行数学计算

原文地址:http://www.programcreek.com/2012/08/interview-question-use-java-thread-to-do-math-calculation/

这篇文章主要通过一个示例来讲如何使用 join() 方法。

问题:如何使用 Java 多线程来计算表达式 1*2/(1+2)

解答

使用一个线程做加法运算,一个线程做乘法运算,一个主线程做除法运算。 由于线程之间不需要传输数据,所以只需要考虑线程执行的顺序即可。

在主线程中,让加法和乘法加入进来,我们希望主线程一直保持等待状态直到调用 join() 的线程结束时,才调用 join() 方法。 简而言之,我们需要先进行加法和乘法运算,最后再进行除法。

class Add extends Thread {
    int value;

    public void run() {
        value = 1 + 2;
    }
}

class Mul extends Thread {
    int value;

    public void run() {
        value = 1 * 2;
    }
}

public class Main{
    public static void main(String[] args){
        Add t1 = new Add();
        Mul t2 = new Mul();

        t1.start();
        t2.start();

        try {
            t1.join();
            t2.join();
        } catch (InterruptedException e) {
            e.printStackTrace();
        }

        double n = ((double)t2.value/t1.value);

        System.out.println(n);        
    }
}

results matching ""

    No results matching ""