Java中的同步与互斥机制--synchornized学习
作者:网络转载 发布时间:[ 2012/11/16 9:45:31 ] 推荐标签:
三、synchronized修饰static方法
synchronized静态(static)方法的用法如下面代码示例:
public static synchronized void fun_3()
{
……
}
如果方法用static修饰,synchronized的作用范围是class一级的,它对类的所有对象起作用。像第一点中的fun()方法,如果是static的,那么synchronized对p1对象和p2对象都起到同步互斥的作用。
其实说白了,对于static的synchronize也可以理解为对象级别的(hoho!是不是有点糊涂了? ^_^),因此下面代码可以达到同样效果:
class XX
{
public static void fun_4()
{
synchronized(XX.class)
{
……
}
}
}
请注意,XX.class也是一个对象,类型是Class,在一个ClassLoader里,它是的。因此,我在前面说,也理解它是对象级别的。
后简单总结一下:
(1)通常把synchronized关键字的作用范围划分为类的范围和对象的范围两种,不过偶个人理解的是,既然取得的锁都是对象(参考第三点),也可以认为synchronized关键字都作用于对象。
(2)synchronized关键字是不能继承的,即,父类的synchronized方法在子类中不是synchronized,必须要重新的显式的声明为synchronized才行。
(3)实现同步需要很大的系统开销,导致延迟等待,甚至可能造成死锁,所以在非多线程情况下不要使用。
相关推荐
更新发布
功能测试和接口测试的区别
2023/3/23 14:23:39如何写好测试用例文档
2023/3/22 16:17:39常用的选择回归测试的方式有哪些?
2022/6/14 16:14:27测试流程中需要重点把关几个过程?
2021/10/18 15:37:44性能测试的七种方法
2021/9/17 15:19:29全链路压测优化思路
2021/9/14 15:42:25性能测试流程浅谈
2021/5/28 17:25:47常见的APP性能测试指标
2021/5/8 17:01:11