7.3 面试问题-利用Java线程做数据计算

这是一个显示如何利用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);      
    }
}

你可能感兴趣的:(7.3 面试问题-利用Java线程做数据计算)