synchronized 锁静态变量和 锁当前this对象 区别
时间: 2023-10-10 11:12:14 浏览: 125
Android多线程之同步锁的使用
`synchronized` 是 Java 中用于实现线程安全的关键字,其可以用于锁定对象或类。其主要作用是在多线程环境下保证被锁定的代码块或方法只能被一个线程执行,从而避免了多个线程同时对共享资源进行修改而引发的数据不一致问题。
当`synchronized`关键字锁定的是静态变量时,其可以保证在同一个 JVM 中,所有使用该静态变量的线程都会被同步。这种锁定方式是基于类级别的,因此不仅仅是锁定了某个对象的访问,而是锁定了整个类的访问,从而可以避免多个线程同时访问该静态变量的问题。
而当`synchronized`关键字锁定的是当前对象的时候,其只会锁定当前对象实例的访问,其他对象实例的访问则不受影响。这种锁定方式是基于对象级别的,因此只会锁定当前对象的访问,而不会锁定其他对象的访问。所以,如果多个线程同时访问多个对象实例的时候,使用当前对象的锁定方式并不能保证线程安全,需要使用其他锁定方式来保证线程安全。
阅读全文