「java静态锁」锁 Java
本篇文章给大家谈谈java静态锁,以及锁 Java对应的知识点,希望对各位有所帮助,不要忘了收藏本站喔。
本文目录一览:
java的静态同步锁会影响实例化该类的过程吗
看到你提的问题发现自己也没有思考过,然后找了一篇文章感觉里面讲的挺好。
网页链接
java synchronized对静态方法加锁
2所有的非静态同步方法用的都是同一把锁——实例对象本身,也就是说如果一个实例对象的非静态同步方法获取锁后,该实例对象的其他非静态同步方法必须等待获取锁的方法释放锁后才能获取锁,可是别的实例对象的非静态同步方法因为跟该实例对象的非静态同步方法用的是不同的锁,所以毋须等待该实例对象已获取锁的非静态同步方法释放锁就可以获取他们自己的锁。
而所有的静态同步方法用的也是同一把锁——类对象本身,这两把锁是两个不同的对象,所以静态同步方法与非静态同步方法之间是不会有竞态条件的。但是一旦一个静态同步方法获取锁后,其他的静态同步方法都必须等待该方法释放锁后才能获取锁,而不管是同一个实例对象的静态同步方法之间,还是不同的实例对象的静态同步方法之间,只要它们同一个类的实例对象!
java多线程中,如何给静态变量(如List)加锁/同步
使用synchronized关键字同步方法就可以了。
public class Foo2 {
private int x = 100;
public int getX() {
return x;
}
//同步方法
public synchronized int fix(int y) {
x = x - y;
System.out.println("线程"+Thread.currentThread().getName() + "运行结束,减少“" + y + "”,当前值为:" + x);
return x;
}
}
java静态锁和实例锁的区别
静态锁: 在静态方法前面加上synchronized方法表示锁定此类,当多个线程调用这个类中的静态方法时会阻塞。
实例锁: 在实例方法前面加上synchronized方法表示锁定类的单个实例,当多个线程调用一个类申明的同一个实例的实例方法是会阻塞。
但静态锁和实例锁两者间的同步并不会受到互相干扰
java静态锁的介绍就聊到这里吧,感谢你花时间阅读本站内容,更多关于锁 Java、java静态锁的信息别忘了在本站进行查找喔。