静态类并发时的安全问题
静态变量是⾮线程安全的,也是需要我们注意线程安全的地⽅。
1、静态变量:
使⽤static关键字定义的变量。static可以修饰变量和⽅法,也有static静态代码块。被static修饰的成员变量和成员⽅法独⽴于该类的任何对象。也就是说,它不依赖类特定的实例,被类的所有实例共享。只要这个类被加载,Java虚拟机就能根据类名在运⾏时数据区的⽅法区内定到他们。因此,static对象可以在它的任何对象创建之前访问,⽆需引⽤任何对象。
⽤public修饰的static成员变量和成员⽅法本质是变量和全局⽅法,当声明它的类的对象时,不⽣成static变量的副本,⽽是类的所有实例共享同⼀个static变量。
2、静态变量使⽤的场景:
(1)对象间共享值时
(2)⽅便访问变量时
3、静态⽅法使⽤注意事项:
static修饰的变量(1)不能在静态⽅法内使⽤⾮静态变量,即不能直接访问所属类的实例变量;
(2)不能在静态⽅法内直接调⽤⾮静态⽅法;
(3)静态⽅法中不能使⽤this和super关键字;
版权声明:本站内容均来自互联网,仅供演示用,请勿用于商业和其他非法用途。如果侵犯了您的权益请与我们联系QQ:729038198,我们将在24小时内删除。
发表评论