一个小问题,静态函数里定义的变量一定是静态变量吗

时间:2022-10-25 19:33:51
一个非静态类里面的静态函数,在静态函数里定义一个变量,这个变量算不算静态变量??

如果算的话,那是否所有静态函数都有lock的需要呢??

7 个解决方案

#1


静态函数内的静态变量是非线程安全的,多线程需要lock
静态函数内的非静态变量(局部变量)是线程安全的,不需要lock。

#2


方法里声明的变量都是临时变量,跟静态不静态没有关系...静态方法也跟静态对象没有关系...

需不需要lock只取决于对象是否线程安全,跟静态不静态没有关系...

#3


引用 2 楼 vrhero 的回复:
方法里声明的变量都是临时变量,跟静态不静态没有关系...静态方法也跟静态对象没有关系...

需不需要lock只取决于对象是否线程安全,跟静态不静态没有关系...

对的就是这样的

#4


引用 1 楼 sj97a007 的回复:
静态函数内的静态变量是非线程安全的,多线程需要lock
静态函数内的非静态变量(局部变量)是线程安全的,不需要lock。


明白

#5


再问一个

对于静态和非静态方法,是否就区别于能否不实例化就调用??

#6


引用 5 楼 cannel 的回复:
再问一个

对于静态和非静态方法,是否就区别于能否不实例化就调用??


静态方法与非静态方法的区别在于一个是类方法,一个是实例方法。从这一点上来说,你认为的能否不实例化就调用是一个区别,但当然还有其他的细节区别,比如静态方法只能访问类的静态变量这样的情况。

所以,如果你只是问概念的差异可以这样认为,如果是问具体使用中的差异,也不安全对了。在适当的时候使用适当的方式方法也是编程中的一个要点。

#7


静态函数和普通函数是一样的

#1


静态函数内的静态变量是非线程安全的,多线程需要lock
静态函数内的非静态变量(局部变量)是线程安全的,不需要lock。

#2


方法里声明的变量都是临时变量,跟静态不静态没有关系...静态方法也跟静态对象没有关系...

需不需要lock只取决于对象是否线程安全,跟静态不静态没有关系...

#3


引用 2 楼 vrhero 的回复:
方法里声明的变量都是临时变量,跟静态不静态没有关系...静态方法也跟静态对象没有关系...

需不需要lock只取决于对象是否线程安全,跟静态不静态没有关系...

对的就是这样的

#4


引用 1 楼 sj97a007 的回复:
静态函数内的静态变量是非线程安全的,多线程需要lock
静态函数内的非静态变量(局部变量)是线程安全的,不需要lock。


明白

#5


再问一个

对于静态和非静态方法,是否就区别于能否不实例化就调用??

#6


引用 5 楼 cannel 的回复:
再问一个

对于静态和非静态方法,是否就区别于能否不实例化就调用??


静态方法与非静态方法的区别在于一个是类方法,一个是实例方法。从这一点上来说,你认为的能否不实例化就调用是一个区别,但当然还有其他的细节区别,比如静态方法只能访问类的静态变量这样的情况。

所以,如果你只是问概念的差异可以这样认为,如果是问具体使用中的差异,也不安全对了。在适当的时候使用适当的方式方法也是编程中的一个要点。

#7


静态函数和普通函数是一样的