在一个类中,如果有Static Variable
,一些开发人员建议通过访问它们,Synchronize Methods
因为当访问变量的进程正在运行时,另一个进程可以更改该变量的值。这是错的吗?是不是也有关系Thread Safe
?
问问题
96 次
3 回答
1
是的,这与线程安全有关,与进程无关(每个进程通常都有自己的内存,因此没有对变量的共享访问)。
每当一个变量可以被多个线程访问时,您需要添加某种形式的同步以确保在一个线程中所做的更改对其他线程可见,并且您对变量(以及可能相关的变量)的操作不会互相干扰。
同步访问静态变量通常是一个好主意,因为通常很难排除它会被多个线程访问,特别是如果变量也是公共的。
如果这个变量是一个常量,即它只在静态初始化期间设置并且之后永远不会改变,你可以将它设为final而不是同步访问。类似地,根据变量的用途,它也可能足以使其变为易失性,这至少可以确保对其值的更改立即对所有线程可见。
于 2012-09-23T13:21:05.057 回答
0
如果包含变量的类预计将在并发环境中使用,并且静态变量不是最终的(或不可变的对象),那么您最好通过同步访问来控制它,否则,如果您不这样做会更好t 这样做是因为同步方法或块的性能较低。
于 2012-09-23T13:17:19.923 回答
0
仅仅因为一个变量是static
并不意味着它需要被保护免受并发修改。
于 2012-09-23T13:08:05.090 回答