摘要:
3 对象的共享 3.1 可见性 我们不仅希望防止某个线程正在使用对象状态而另一个线程在同时修改该状态,而且希望确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。因此就需要通过显式的同步或者类库中内置的同步来保证对象被安全地发布。 3.1.1 失效数据 3.1.2 非原子的64位操作 JVM允许将64位的读操作或写操作分解为两个32位的操作。当读取一个非volatile类型的long变... 阅读全文
posted @ 2018-03-10 11:00
老人与JAVA
阅读(283)
评论(0)
推荐(0)
摘要:
2 线程安全 核心就是在访问对象的可变状态时,进行正确的管理。 2.1 对象及状态 对象的状态(也可理解为属性)是指存储在状态变量(例如实例或静态域)中的数据。对象的状态可能包括其他依赖对象的域。例如,某个HashMap的状态不仅存储在HashMap对象本身,还包含集合里面存储的对象。 如何安全地访问可变状态的变量? A: 不在多个线程之间共享(定义为私有) B:定义为final C: 使用同步 ... 阅读全文
posted @ 2018-03-10 10:58
老人与JAVA
阅读(448)
评论(0)
推荐(0)
摘要:
一、jar包管理(仓库) 最佳实践: 1:排除依赖 pom中依赖了某个第三方API,此API又依赖其它API,有可能出问题。(必须申明排除该第三方依赖) Spring-core又隐式的依赖了commons-logging,而quartz又隐式依赖了slf4j,导致log4j里面的mybatis的sq 阅读全文
posted @ 2018-03-10 10:38
老人与JAVA
阅读(1151)
评论(0)
推荐(0)