如果線程正在執行下面的語句(假設x的值爲1)並且在'Here'處休眠並且某個其他線程更改了x的值(假設爲10),那麼輸出是什麼?在線程中執行java語句
System.out.println(/Here/++x);
如果線程正在執行下面的語句(假設x的值爲1)並且在'Here'處休眠並且某個其他線程更改了x的值(假設爲10),那麼輸出是什麼?在線程中執行java語句
System.out.println(/Here/++x);
如果運行System.out
停止它做任何處理之前就++x
,然後的x
值被另一個線程改變10
線程,打印的聲明將是什麼Here
計算結果爲,其次是11
。
哪一個先到先得。但是你應該知道,如果命令正在被執行,它不可能改變。即使系統是多核,它也會先完成命令然後跳到下一個。除非它稱爲一個大功能,這是一個不同的主題。
「* big function *」的定義是什麼? –
您可能想查看[Synchronization and System.out.println](http://stackoverflow.com/questions/9459657/synchronization-and-system-out-println)帖子的答案。 –
這取決於x在每個線程中的聲明和實際引用 – MRalwasser