java全局变量加锁_Java锁Synchronized,对象锁和类锁举例

本文详细介绍了Java中synchronized关键字的使用,包括对象锁和类锁的区别。通过示例展示了如何对全局变量和整个类进行加锁,并解释了不同对象实例的synchronized方法可同时执行,而类锁会限制所有对象的同步方法。还讨论了String常量作为锁的特殊性,以及synchronized作用于静态和非静态方法的差异。
摘要由CSDN通过智能技术生成

4. 同步加锁的是对象,而不是代码。因此,如果你的类中有一个同步方法,这个方法可以被两个不同的线程同时执行,只要每个线程自己创建一个的该类的实例即可。

5. 不同的对象实例的synchronized方法是不相干扰的。也就是说,其它线程照样可以同时访问相同类的另一个对象实例中的synchronized方法。

6. synchronized关键字是不能继承的,也就是说,基类的方法synchronized f(){} 在继承类中并不自动是synchronized f(){},而是变成了f(){}。继承类需要你显式的指定它的某个方法为synchronized方法。

7.对一个全局对象或者类加锁时,对该类的所有对象都起作用。

类锁举例

对一个全局变量加锁:

1 public class MySynchronized extends Thread

2 {

3 private int val;

4

5 private static Object lock = new Object();

6

7 public MySynchronized(int v)

8 {

9 val = v;

10 }

11

12 public void printVal(int v)

13 {

14 synchronized (lock)

15 {

16 while (true)

17 {

18 System.out.println(v);

19 }

20 }

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值