Java关键字之synchronized
来源:互联网 发布:jq删除数组中指定元素 编辑:程序博客网 时间:2024/05/17 09:12
我相信很多初学java的同学第一次见到这个关键字的时候都头痛不已,什么玩意啊?长长的一大串,不像个单词……应该基本不会用到吧(反正我第一次看见的时候就是这样想的)。最近在学习多线程方面的知识,刚好又要学这个关键字,所以在此做个笔记,也方便以后自己查阅。
当有多个线程同时访问某个对象的实例变量、或者类变量时,就会出现我们经常所说非线程安全。这里的非线程安全并不针对方法的私有变量,因为方法中的私有变量时每个线程都会独有的,并不会发生非安全访问。下面先列出我了解到的synchronized关键字的性质,有缺少的部分欢迎大家指出。
1.访问同步方法:使用synchronized关键字修饰方法时,多个线程同时访问同一实例的该方法会被同步,同一时间只有一个线程能获得当前对象的锁,获得锁之后会进入方法,方法执行完毕自动释放锁。
2.访问其他方法:当我们访问使用synchronized关键字修饰的方法时,可以访问该实例其他未同步的方法,无法访问该实例其他被synchronized修饰的方法。但是可以在synchronized方法中访问其他synchronize的方法,因为它是重入锁。
3.锁的是什么:就我理解的话,synchronized关键字锁的是一个对象,因为多个线程可以获取多个实例的多个锁,每个实例都会产生一个自己的锁。
4.提高效率:当我们使用同步方法时,可能我们只需同步改方法中修改实例变量的部分,这时我们就可以使用同步代码块的方式来提高程序的执行效率。同样,第2条适合同步块之间的访问。
5.互斥&可见:synchronized不仅可以解决一个线程看到对象处于不一致的状态,还可以保证进入同步方法或者同步代码块的每个线程,都看到由同一个锁保护之前所有的修改效果。
由于几个性质的测试代码较多,贴出来也不方便大家看,所以把代码全都放在github上,这样大家如果想验证相关性质就可以在本地更好的实践了,代码中有详细的注释——synchronized性质验证代码。不足之处欢迎大家指出指正。
- java之关键字synchronized
- Java关键字之synchronized
- Java关键字之synchronized
- Java关键字之synchronized
- java之synchronized关键字
- Java多线程之synchronized关键字
- JAVA多线程之Synchronized关键字
- Java并发之synchronized关键字
- Java并发之synchronized关键字
- java之synchronized关键字使用详解
- JAVA同步之 synchronized关键字详解
- 浅析java多线程之Synchronized关键字
- java多线程之synchronized和volatile关键字
- Java 多线程之synchronized关键字详解
- Java 多线程之synchronized关键字详解
- Java多线程之synchronized关键字详解
- Java 多线程之synchronized关键字详解
- Java 多线程并发编程之 Synchronized 关键字
- RPC实践(二)JsonRPC实践
- 密码强度判断
- Debian(Ubuntu) 中apt-get使用
- JQuery实现全选、全不选和反选功能
- runtime系列(二) method swizzling 与AOP编程
- Java关键字之synchronized
- wordpress笔记
- Oracle表空间操作/用户权限/导入导出
- Failed to apply plugin [id 'com.android.application']
- java compiler level does not match the version of the installed Java project facet 解决方法
- netstat 统计网络连接数
- JavaScript parseInt() &parseFloat & toFixed函数
- Hadoop Snappy安装终极教程
- bootstrap-多层模态框滚动条消失问题