这是一个展示如何使用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/

最新文章

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

热门文章

  1. Mysql日期统计函数简介
  2. 登录校验(demo)
  3. spring笔记2 spring MVC的基础知识2
  4. 详解 Spring 3.0 基于 Annotation 的依赖注入实现(转)
  5. Gym 100703G---Game of numbers(DP)
  6. js中typeof的使用方法
  7. Java接口之间的继承
  8. 设计一个较好的框架的难点之一--API兼容性的设计
  9. Java基础学习小记--多态
  10. 【MVC学习笔记01】初窥奥秘