一道java面试题
来源:互联网 发布:snmp windows版本 编辑:程序博客网 时间:2024/06/04 17:46
public class test { private int a=1, b=2; public void foo(){ a=3; b=4; } public int getA(){ return a; } public int getB(){ return b; } }
当线程1执行foo方法的时候,线程2访问getA和getB会得到什么样的结果?A. a=1, b=2 //都未改变B. a=3, b=4 //都改变了C. a=3, b=2 //a改变了,b未改变D. a=1, b=4 //b改变了,a未改变
其实答案是不定的,看哪个线程先抢到cpu时间。不能用代码的先后顺序决定线程的执行顺序。而且线程有没有加锁等等都会影响。
就这个例子来说大多数情况都变。
public static void main(String[] args) { final test1 t = new test1(); new Thread() { public void run() { t.foo(); } }.start(); new Thread() { public void run() { System.out.println(t.getA() + "--" + t.getB()); } }.start();}
但是实际项目中如果foo()执行的时间长,可能foo还没执行完,cpu就会把时间片切换到第二个线程执行。
所以每次的结果可能都不一样。
例如把foo()改成这样,让它的执行时间变长,可能就都不变。把循环次数改小,执行时间变短,可能都变
public void foo(){ long i = 0; while(i<1000000000) { int c = a + b; i++; } a=3; b=4;}
1 0
- 一道JAVA面试题
- 一道java面试题
- 一道java面试题
- 一道java面试题
- 一道java面试题
- 一道java面试题
- 一道JAVA编程面试题
- 一道JAVA编程面试题
- 求解一道Java面试题。
- java 一道线程面试题
- 一道有趣java面试题
- 一道java经典面试题
- 一道Java初始化面试题
- 一道JAVA IO面试题
- 一道JAVA IO面试题
- 浅谈一道java面试题
- google的一道JAVA面试题!!!
- google的一道JAVA面试题!!! (转)
- Oracle中B-Tree索引与Bitmap索引的锁代价的比较
- java多线程中yield(),sleep(),wait()区别
- inner join on
- js sort方法根据数组中对象的某一个属性值进行排序
- Xcode 8 浅谈及相关设置
- 一道java面试题
- HDU 4727-The Number Off of FFF
- 启动页面播放视频
- 四种方法解析XML文档:Dom、SAX、JDOM、dom4j
- 设计模式之-外观模式
- 蒋承尧编写的查看表空间中各页的类型和信息的脚本
- 普通web项目的Resteasy配置使用
- leetcode 第三题 最长不重复子串
- 常用的sql