面试问题 - 使用 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);
}
}