java静态方法之线程安全问题
来源:互联网 发布:张学友唱功 知乎 编辑:程序博客网 时间:2024/06/03 17:44
静态方法和实例方法的区别是静态方法只能引用静态变量,静态方法通过类名来调用,实例方法通过对象实例来调用
每个线程都有自己的线程栈,栈与线程同时创建,每一个虚拟机线程都有自己的程序计数器PC,在任何时刻,一个虚拟机线程只会执行一个方法的代码,这个方法称为该线程的当前方法,如果这个方法不是native的,程序计数器就保存虚拟机正在执行的字节码指令的地址。
线程调用方法的时候会创建栈帧,用于保存局部变量表和操作数栈以及指向该类常量池的引用
静态方法虽然是同一个方法,但是不同线程在调用,程序计数器的值是不一样的,操作这两个线程不会相互影响(假设不存在访问共享变量的情况)
在设计工具类时,这要没有共享的变量,静态工具类方法不需要加锁。
在使用单例模式做工具类,这个时候静态方法就需要加锁,因为所有的线程虽然都是有自己的方法栈,但是在方法栈中操作的是同一个对象的实体(所以需要加锁,加锁的代价是所有的线程需要等待锁的释放才能使用该对象的引用)
在使用多例模式做工具类时,这个时候也是不需要加锁,因为所有的线程都有自己的方法栈,但是方法栈帧中创建了独立的对象引用,每个线程都是在操作各自方法栈帧中的局部对象引用,所以这时候不要同步
阅读全文
0 0
- java静态方法之线程安全问题
- java之线程安全问题
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java 线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例…
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量 .
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- java线程安全问题之静态变量、实例变量、局部变量
- codeforces 888E Maximum Subsequence (折半枚举 双向搜索)
- 160个练手CrackMe-029
- tab
- 初学Html5+CSS之简易购物车(加入购物车+路由+结算+ionic)
- Python自然语言处理第二章-2.5 WordNet(II)——wordnet的层次结构
- java静态方法之线程安全问题
- Github for windows简单使用教程
- git使用教程
- web.xml的用法详解(转载保存)
- 理解 指针数组 数组指针 函数指针 函数指针数组 指向函数指针数组的指针
- C++学习笔记--引用
- 侧滑菜单.html
- 二、分支结构和循环结构
- 5offsetLeft,offsetParent,getBoundingClientRect