大家好,我是哪吒。
公司最近在招聘实习生,作为面试官之一的我,问了一道不起眼的经典面试题。
大部分的面试者会这样答:
下面这个才是主菜。
大部分面试者心里肯定在想,这会有啥问题,不就是一个普通的操作嘛!
先从i++操作说起,一个命令可以拆分成三部分:
我去,这不是吹毛求疵,鸡蛋里挑骨头嘛!这面试不参加也罢!
但是,你想啊,如果当线程执行到取值或者++操作时,线程突然切换了,会不会有问题呢?
public class ThreadTest1 { int a = 1; int b = 1; public void add() { System.out.println("add start"); for (int i = 0; i < 10000; i++) { a++; b++; } System.out.println("add end"); } public void compare() { System.out.println("compare start"); for (int i = 0; i < 10000; i++) { boolean flag = a < b; if (flag) { System.out.println("a=" + a + ",b=" + b + "flag=" + flag + ",a < b = " + (a < b)); } } System.out.println("compare end"); } public static void main(String[] args) { ThreadTest1 threadTest = new ThreadTest1(); new Thread(() -> threadTest.add()).start(); new Thread(() -> threadTest.compare()).start(); }}
本文链接:http://www.28at.com/showinfo-26-11755-0.html一个关于 i++ 和 ++i 的面试题打趴了所有人
声明:本网页内容旨在传播知识,不代表本站观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。