当前位置: 技术问答>java相关
static方法有没有多线程的问题?
来源: 互联网 发布时间:2015-04-17
本文导语: 对于static方法,一个类的所有实例共有一块内存区域,那么多个用户(其他类的实例)同时访问这个static方法时,会不会出现冲突?还是static方法本来就是同步的? | static方法不是本来就是同步的。 该...
对于static方法,一个类的所有实例共有一块内存区域,那么多个用户(其他类的实例)同时访问这个static方法时,会不会出现冲突?还是static方法本来就是同步的?
|
static方法不是本来就是同步的。
该方法内的变量是临时变量,多线程同时访问时,实际上每个线程都有一份数据。
如果调用了该类的成员静态变量,那么想要不出问题的话,需要将该方法同步。
该方法内的变量是临时变量,多线程同时访问时,实际上每个线程都有一份数据。
如果调用了该类的成员静态变量,那么想要不出问题的话,需要将该方法同步。
|
如果你没有用到类的static变量的话,就没有问题
|
多线程用的异步方法要求是是可重入的,就是代码不能修改自身(这个问题在java
中是不存在的),但是一旦方法需要修改公用变量就需要对它进行同步处理,可以
将访问公用变量的部分单独提取出来做一个同步方法。
中是不存在的),但是一旦方法需要修改公用变量就需要对它进行同步处理,可以
将访问公用变量的部分单独提取出来做一个同步方法。