synchronized修饰静态方法
时间: 2023-04-29 22:01:04 浏览: 157
synchronized关键字可以用来修饰静态方法。当一个静态方法被synchronized修饰后,它就成为了一个同步方法,只能被一个线程访问。这是因为synchronized关键字会在方法调用前加锁,在方法调用结束后释放锁。而静态方法是属于类的,所以当一个静态方法被synchronized修饰后,它锁定的是整个类,而不是对象。
相关问题
synchronized修饰静态方法和非静态方法有区别
是的,synchronized修饰静态方法和非静态方法有区别。
当synchronized修饰非静态方法时,它锁定的是该方法所属对象的实例,也就是说,每个对象实例都有自己的锁。当一个线程进入该方法时,它会尝试获取该对象实例的锁,如果被其他线程占用,则该线程会被阻塞,直到获取到锁才能执行方法。
当synchronized修饰静态方法时,它锁定的是该方法所属的类的Class对象,而不是实例对象。因此,不管有多少个对象实例,它们都共享同一个锁。当一个线程进入该方法时,它会尝试获取该类的Class对象的锁,如果被其他线程占用,则该线程会被阻塞,直到获取到锁才能执行方法。
因此,synchronized修饰静态方法和非静态方法的区别在于锁定的对象不同,这也决定了它们的适用场景不同。通常来说,当一个共享的资源需要被多个线程访问时,使用synchronized修饰静态方法更加合适,而当一个对象的某些方法需要被同步访问时,使用synchronized修饰非静态方法更加合适。
描述synchronized修饰静态方法和非静态方法的区别
synchronized修饰静态方法时,锁住的是整个类的Class对象,而synchronized修饰非静态方法时,锁住的是该方法所属对象的实例。因此,synchronized修饰静态方法时,多个线程访问同一个类的不同对象时,也会被阻塞,而synchronized修饰非静态方法时,多个线程访问同一个对象的不同方法时,也会被阻塞。
相关推荐
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)