java中的final变量和synchronized块

2023-11-25

Java中的final变量是什么?例如:如果我写final int temp;函数中final关键字的含义是什么?
另外,我什么时候想使用final变量(既作为类变量又作为函数变量)?
为什么同步块中的变量必须声明为final?


Final 变量和同步代码块确实有一些共同点......如果您声明非 Final 变量a然后写synchronized (a) { System.out.println('xxx'); }您将收到警告“在非最终字段上同步”——至少在 NetBeans 中是这样。

为什么你不应该在非最终字段上同步?因为如果字段值可能发生变化,那么不同的线程可能会在不同的对象(字段的不同值)上进行同步 - 因此根本不可能存在同步(每个线程可能同时进入同步块)。

请看这里,了解因在非最终字段上同步而导致的现实生活中的问题的示例:http://forums.sun.com/thread.jspa?threadID=5379204

本文内容由网友自发贡献,版权归原作者所有,本站不承担相应法律责任。如您发现有涉嫌抄袭侵权的内容,请联系:hwhale#tublm.com(使用前将#替换为@)

java中的final变量和synchronized块 的相关文章

随机推荐