这是一个显示如何利用join()进行计算的例子。面试问题:利用Java多线程计算表达式1*2/(1+2).
解决:
用一个线程计算加法操作,一个线程计算乘法操作,主线程计算除法操作。因为线程之间不需要交换数据,索引仅仅需要考虑线程执行顺序。
在主线程中,让相加和乘法join到主线程。当我们希望父线程等待直到调用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);
}
}