Java synchronized锁的理解

news/2024/5/17 18:51:47 标签: synchronized

根据本人的理解和实验效果,我认为Java synchronized的主要用法分三种:

锁静态函数或类.class(即所谓的类锁)
锁对象/锁函数(简称对象锁)
锁对象的非静态成员变量(变量锁)

结论:

1.锁对象与锁对象的非静态成员变量并不会形成同步,两者并没有包含关系。即使this里包含content成员,但对于synchronized()来讲,是两个不同的输入对象或者说参数,二者不会同步。
2.如果要对类对象里多个成员变量分别进行同步的,需保持同步参数的一致,即this与this配对(或者this与函数配对),变量与变量各自配对,但不能this与成员变量配对。
3.锁对象中嵌套调用锁对象的非静态成员变量,也没有达到与单独调用锁对象的非静态成员变量形成同步的效果(原因待研究)。
4.嵌套用锁,要注意避免死锁;尽量不要嵌套。


http://www.niftyadmin.cn/n/1646567.html

相关文章

JAVA 基础 day-25 练习 (Properties类、对象的序列化与反序列化和打印流)

1.用代码实现以下需求 (1)定义学生类,包含姓名(String name),性别(String gender),年龄(int age)三个属性,生成空参有参构造,set和get方法,toString方法 (2)键盘录入6个学员信息(录入格式:张三,男,25),要求有两个相同的信息,将6个学员信息存入到ArrayList集合中 (3)将…

FTP的PORT(主动模式)和PASV(被动模式)

转自 http://my.oschina.net/binny/blog/17469 最近做一个项目用到FTP和其它系统进行文件传输,结果在FTP网络连接的问题上花了很多时间,由于太久没搞多FTP,忘记了FTP不单单开放21端口,客户端采用不同连接模式对网络有不同。在此重…

银行数据平台发展方向

DT 时代,银行业务趋向敏态化,数据量呈现出爆炸式增长态势,这些蕴涵无限价值的大数据给整个银行体系带来了创新动能,成为银行提升竞争力的关键因素。从业界数据管理和数据利用的趋势来看,数据平台进化已成为各银行急需解…

使用Ngrok 实现内网穿透教程(Ngrok 和 Sunny-Ngrok(永久使用) )

前言: 在日常使用微信小程序、做支付项目时总会用到公网ip的情况,对于学生和非商用测试肯定需要一个经济实惠的方式。经调研,现在市场上有一次性使用Ngrok,域名永久使用的Sunny-Ngrok。 分析: 其中第一种方式比较简…

jjava.lang.UnsupportedClassVersionError: main/Main : Unsupported major.minor version 52.0

转自“http://syc001.iteye.com/blog/2020935 案例背景: Eclipse官网上面下载最新的eclipse,安装后,将software的Java--> Installed JREs 设置为jdk1.6.0后,后新建项目,编写测试类T.java 运行,报错。 错…

JAVA 多线程匿名内部类的使用

package demo;public class Test1 {public static void main(String[] args) {//集成Thread类new MyThread().start();//匿名内部类重写run方法new Thread() {public void run() {for(int i0; i< 1100; i) {System.out.println(i);}}}.start();//匿名内部类Thread 构造器填入…

java.util.NoSuchElementException: Timeout waiting for idle object

做高并发测试时报错&#xff1a;java.util.NoSuchElementException: Timeout waiting for idle object 很显然时redis连接池崩了。 代码编写一定要仔细&#xff0c;不要忘记 jedis.close();

* daemon not running. starting it now * ADB server didn't ACK * failed to start daemon *

转载请注明出处&#xff1a;http://blog.csdn.net/xiaanming/article/details/9401981 ADB server didnt ACK 这个问题会困恼很多的新手朋友&#xff0c;我以前刚开始做Android的时候也遇到过这个问题&#xff0c;不过自己百度&#xff0c;google啥的&#xff0c;也不知道怎么就…