大家好,我是哪吒。
公司最近在招聘實習生,作為面試官之一的我,問了一道不起眼的經典面試題。
大部分的面試者會這樣答:
下面這個才是主菜。
大部分面試者心里肯定在想,這會有啥問題,不就是一個普通的操作嘛!
先從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.www897cc.com/showinfo-26-11790-0.html一個關于 i++ 和 ++i 的面試題打趴了所有人
聲明:本網頁內容旨在傳播知識,若有侵權等問題請及時與本網聯系,我們將在第一時間刪除處理。郵件:2376512515@qq.com
上一篇: 利用SpeechToText功能創建交互式語音助手應用程序的實現指南
下一篇: 徹底搞懂Spring的Bean加載