面试问题-使用Java线程做数学运算
这是一个展示如何使用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/
面试问题-使用Java线程做数学运算的更多相关文章
- 面试必备:Java线程池解析
前言 掌握线程池是后端程序员的基本要求,相信大家求职面试过程中,几乎都会被问到有关于线程池的问题.我在网上搜集了几道经典的线程池面试题,并以此为切入点,谈谈我对线程池的理解.如果有哪里理解不正确,非常 ...
- 聊聊面试中的 Java 线程池
背景 关于 Java 的线程池我想大家肯定不会陌生,在工作中或者自己平时的学习中多多少少都会用到,那你真的有了解过底层的实现原理吗?还是说只停留在用的阶段呢?而且关于 Java 线程池也是在面试中的 ...
- 面试官:Java 线程如何启动的?
摘要:Java 的线程创建和启动非常简单,但如果问一个线程是怎么启动起来的往往并不清楚,甚至不知道为什么启动时是调用start(),而不是调用run()方法呢? 本文分享自华为云社区<Threa ...
- java字符串类型数学运算表达式以及精度丢失问题
字符串类型数学运算精度丢失问题 方式一:ScriptEngine 会精度丢失,可执行连续双括号 方式二:hutool ScriptUtil 会精度丢失,可执行连续双括号 方式三:hutool Scri ...
- 【阿里面试系列】Java线程的应用及挑战
文章简介 上一篇文章[「阿里面试系列」搞懂并发编程,轻松应对80%的面试场景]我们了解了进程和线程的发展历史.线程的生命周期.线程的优势和使用场景,这一篇,我们从Java层面更进一步了解线程的使用.关 ...
- Java中的数学运算BigDecimal
Math类 package ch7; /** * Created by Jiqing on 2016/11/24. */ public class MathDemo { public static v ...
- php 做数学运算时结果为0的原因
php是一种弱类型的脚本语言,一般情况下字符串型的数字可以直接参与运算. 但是当字符串开头是实体空格的时候系统会默认字符串等于0. 此问题比较隐蔽,在此记录下
- [Robot Framework] 怎么做数学运算?
运用BuiltIn里面的Set Variable
- [不得不知道系列]Java线程面试你不得不知道的基础知识一
Java内存管理面试指南一 Java基础面试指南一 Java基础面试指南二 Java基础面试指南三 Java基础面试指南四 Java线程面试指南一 Java线程面试指南二 Redis面试指南一 Kaf ...
随机推荐
- WinForm对话框
WinForm 对话框控件colorDialog - 颜色选择对话框 使用代码如下: private void 字体颜色ToolStripMenuItem_Click(object sender, E ...
- 【SQL】sql版Split函数。用于拆分字符串为单列表格
功能与.net版string.Split函数类似,只不过.net返回的是数组,这个返回的是一个单列表格,每个拆分出来的子串占一行.可选是否移除空格子串和重复项.市面上类似的函数不算少,但大多都是在循环 ...
- Java基础复习笔记系列 十三 反射机制
主题:Java反射机制 学习资料参考网址: 1.http://www.icoolxue.com 1.Java反射机制. 各种框架中都使用到了Java的反射机制. 两个类:java.lang.Class ...
- Fiddler (三) Composer创建和发送HTTP Request
之前已经写过两篇Fiddler的文章了,分别是[Fiddler教程] [Fiddler script用法]. 我准备把Fiddler写成一个系列. Fiddler的功能还有很多, 很多功能都没有 ...
- excel查看VBA代码快捷键
公司现在的很多自动化代码生成使用excel VBA,本来这事跟自己一点关系打不着,不过计划年底切换中间件,这得导致部分代码结构调整,自己还得去调整测试,老忘掉这快捷键,特记录下,Alt + F11
- C# 7个读写Excel文件的类库
转载自:http://www.cnblogs.com/wintersun/archive/2013/02/26/2933294.html 有时我们在项目需要操作Excel文件,读或写,导出数据等. ...
- IoC和DI的理解
1 概述 当我们想闭上眼睛想如何让我们的软件更加可用可维护时,我们总能想到一个词:松耦合.在这篇文章中,主要讲述了模块间存在的依赖关系,但这种依赖关系违背了依赖倒置原则.在这之后,我们将讨论一种解除软 ...
- IOS 调用WebService(同步和异步)
因为公司的服务全都是webservice,每次总要花费大量时间在调试服务上面,干脆就写了一个解析wsdl的项目,希望将来能用上吧.还未经过烘焙,有问题,还请高手点播点播. 下面,我拿天气服务的wsdl ...
- js 的点击事件
<button id="btn">click</button> var btn=document.getElementById('btn'); 第一种: b ...
- Perfect Scrollbar – 完美的 jQuery 滚动条插件
Perfect Scrollbar 是一个很小的,但完美的 jQuery 滚动插件.滚动条不会影响原来的设计布局,滚动条的设计是完全可定制的.你可以改变几乎所有的 CSS 样式的滚动条,滚动条设计对脚 ...