synchronized
来源:互联网 发布:ubuntu 16.04网络配置 编辑:程序博客网 时间:2024/06/06 23:56
synchronized在静态办法与非静态办法上的差别:
synchronized在静态方法上表示调用前要获得类的锁,而在非静态方法上表示调用此方法前要获得对象的锁。
public class StaticSynDemo {
private static String a="test";
//等同于方法print2
public synchronized void print1(String b){ //调用前要取得StaticSynDemo实例化后对象的锁
System.out.println(b+a);
}
public void print2(String b){
synchronized (this) {//取得StaticSynDemo实例化后对象的锁
System.out.println(b+a);
}
}
//等同于方法print4
public synchronized static void print3(String b){//调用前要取得StaticSynDemo.class类的锁
System.out.println(b+a);
}
public static void print4(String b){
synchronized (StaticSynDemo.class) { //取得StaticSynDemo.class类的锁
System.out.println(b+a);
}
}
}
在static方法前加synchronized为了防止出现以下情况:
一个类有个属性,又有2个static方法中都会改变这个属性值,所以当一个线程访问该类的一个方法时,别的线程不能访问该类的这2个方法了,否则该类的属性值可能会乱。
另注,方法前加synchronized执行效率会很慢。
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- synchronized
- 打开指定文件夹并选中文件,打开指定文件 .NET实现
- Comparator列表排序
- javascript跨浏览器兼容快捷复制
- 进程外Session
- POCO C++库学习和分析 -- 字符编码
- synchronized
- Alternatives to Lua as an embedded language
- 修改myeclipse 快捷键
- SimpleDateFormat的线程不安全性
- 内存分配的字节对齐
- POCO C++库学习和分析 -- 平台与环境
- Tomcat 问题:为什么运行startup.bat是出现:neither the java_home nor jre_home environment variable is
- Java编程中为了性能需做的26件事
- CSDN高校巡讲石大站—青岛易软天创CEO王春生与我们分享“学习 工作 创业”