Simple Java面试问题-使用Java线程做数学运算

Posted

tags:

篇首语:本文由小常识网(cha138.com)小编为大家整理,主要介绍了Simple Java面试问题-使用Java线程做数学运算相关的知识,希望对你有一定的参考价值。

这是一个展示如何使用join()方法的例子。

问题:

使用Java多线程计算表达式1*2/(1+2)的值。

解决方案:

使用一个线程做加法运算,另一个线程做乘法运算,还有一个主线程main做除法运算。由于线程之间不需要通讯,所以我们只需要考虑线程的执行顺序。

在main线程中,我们让加法运算线程和乘法运算线程join到主线程,join()方法的作用是使main方法等待,直到调用join的线程执行完毕。在这个例子中,我们希望加法运算线程和乘法运算线程先结束,然后在计算除法运算。

package simplejava;

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 Q22 {

    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);
    }

}

 

译文链接:http://www.programcreek.com/2012/08/interview-question-use-java-thread-to-do-math-calculation/

以上是关于Simple Java面试问题-使用Java线程做数学运算的主要内容,如果未能解决你的问题,请参考以下文章

java面试 啥是多线程

深入理解 Java 多线程核心知识:跳槽面试必备

深入理解 Java 多线程核心知识:跳槽面试必备

美团面试题:Java-线程池 ThreadPool 专题详解

Java-线程池专题 (美团面试题)

面试官:Java 多线程怎么做事务控制?一半人答不上来。。