面试问题-使用Java线程做数学运算
2024-10-18 22:25:40
这是一个展示如何使用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/
最新文章
- day9-paramiko
- python 执行文件时传参
- OC:点语法
- [转载]Python模块学习 ---- subprocess 创建子进程
- Django1.6添加comments应用的简单过程
- SKViedoNode类
- SQL Server 性能优化
- Leetcode 27——Remove Element
- 【webstorm使用手册】如何让webstorm支持nextcss基础语法?
- vertx的ShardData共享数据
- 2018-2019-2 20165220 《网络对抗技术》Exp1 PC平台逆向破解
- 常用的当前时间(返回String类型)
- echarts 图例显示到右边
- 牛客第三场多校 E Sort String
- Spark记录-Scala变量/访问修饰符/运算符
- iOS - 友盟集成QQ分享的AppID转换16进制的方法
- const在c和c++中地位不同
- LeetCode_Search Insert Position
- POJ3186 DP
- [你必须知道的.NET]第二十八回:说说Name这回事儿