摘要: 不可变对象需要满足的条件 1 对象创建以后其状态就不能修改 2 对象所有域都是final类型 (这样只能对每个域赋值一次,通过构造器初始化所有成员,进行深度拷贝,在get方法中不直接返回对象本身,而是克隆对象并返回克隆) 3 对象是正确创建的(在对象创建期间,this引用没有逸出) 阅读全文
posted @ 2019-10-30 17:16 踏月而来 阅读(590) 评论(0) 推荐(0) 编辑
摘要: /** * ReentrantLock是独占锁 * Lock锁的使用,把锁和要用锁同步的代码放在一起,这里就是放在Printer类中了 * 获取到锁后,最后要在finally代码块中手动释放锁 */ public class LockTest { public static void main(String[] args) { Printer p... 阅读全文
posted @ 2019-10-30 16:11 踏月而来 阅读(1444) 评论(0) 推荐(0) 编辑
摘要: /*** * 三个线程读数据,三个线程写数据 * */ public class ReadWriteLockTest { public static void main(String[] args) { final ReadWrite rw = new ReadWrite(); for (int i = 0; i < 3; i++) { ... 阅读全文
posted @ 2019-10-30 14:42 踏月而来 阅读(247) 评论(0) 推荐(0) 编辑
摘要: public class ReentrantReadWriteLockTest { public static void main(String[] args) throws InterruptedException { // testReenter(); // testUpgrade(); testDowngrade(); } /** * 在同一个线程中,在没有释放写锁的情况下,就去申请读锁,这 阅读全文
posted @ 2019-10-30 12:26 踏月而来 阅读(973) 评论(0) 推荐(0) 编辑