如果线程正在执行下面的语句(假设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