大家好,我是哪吒。
公司最近在招聘实习生,作为面试官之一的我,问了一道不起眼的经典面试题。
大部分的面试者会这样答:
下面这个才是主菜。
大部分面试者心里肯定在想,这会有啥问题,不就是一个普通的操作嘛!
先从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 的面试题打趴了所有人
声明:本网页内容旨在传播知识,不代表本站观点,若有侵权等问题请及时与本网联系,我们将在第一时间删除处理。