摘要: 一、什么是Factory Method模式 Factory Method模式是用来构建生成实例的工厂,在该模式下,父类决定实例生成的方式,但并不决定所要生成的具体类。这样的设计思想,就跟Template Method模式相似(具体参考:https://www.cnblogs.com/SysoCjs/ 阅读全文
posted @ 2019-01-27 16:14 KamShing 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 列表类型(List)可以存储一个有序的字符串列表,常用的操作就是向列表两端添加元素,或者获取列表中某一个片段。 列表类型内部使用双向链表(double linked list)实现的,所以向列表两端添加或删除元素的速度非常快,越是接近两端的元素就越快,但是,也有弊端,就是通过索引访问元素的速度比较慢 阅读全文
posted @ 2019-01-27 16:08 KamShing 阅读(466) 评论(0) 推荐(0) 编辑
摘要: 一、什么是Template Method模式 顾名思义,Template Method模式就是模板方法模式。所谓的模板,就好比我们练书法一样,刚开始练习的时候,会拿各种各样的字样模板,照着写,练楷书时,就拿楷书模板,练行书时,就用行书模板。过程是固定的,即都是按着模板写,只是具体是楷书,还是行书,视 阅读全文
posted @ 2019-01-27 15:56 KamShing 阅读(167) 评论(0) 推荐(0) 编辑
摘要: 一、什么是Adapter模式? Adapter模式,又称为适配器模式。 这是一个很通俗的名字,“适配器”,我们可以联想到笔记本电脑的充电器(专业名称又叫适配器),每一台笔记本电脑会对应只有一个适配器,适配器的作用是对民用的电压和电流进行转换,使得电压和电流满足当前的笔记本电脑的实际需求。那么,到了程 阅读全文
posted @ 2019-01-27 15:40 KamShing 阅读(246) 评论(0) 推荐(0) 编辑
摘要: Iterator,自然而然想到的是用于集合遍历的迭代器Iterator,没错Iterator模式就是指这个意思。 先来看一段代码: 上面是编程里面很常见的遍历数组的用法,假如我不直接操作array对象,然后将用于表示下标的 i 抽象化,通用化,将遍历的动作交给迭代器,那么这种模式就叫做Iterato 阅读全文
posted @ 2019-01-27 15:31 KamShing 阅读(202) 评论(0) 推荐(0) 编辑
摘要: 当某个线程请求一个由其它线程持有的锁时,该线程就会进入等待或者阻塞状态,一直到持有锁的线程释放锁,然后再去竞争获取锁。然而,内置锁(即Synchronized修饰的锁对象)是可重入的,因此如果某个线程试图获得一个已经由它自己持有的锁,那么它会成功获得此锁,这就是所谓的重入锁,也可以理解为锁的重入。 阅读全文
posted @ 2019-01-27 15:26 KamShing 阅读(237) 评论(0) 推荐(0) 编辑
摘要: 在多线程中,为了使得某个变量对任意一个线程可见,会使用volatile对该变量进行修饰。 理解volatile之前,要先知道线程是如何调用变量的。每一个线程都拥有自己的一个私有堆栈,变量是定义在主内存中,而每个线程会将变量copy一份到私有堆栈。每次启动线程操作,都会先从主内存读取熟读到私有堆栈,然 阅读全文
posted @ 2019-01-27 15:24 KamShing 阅读(146) 评论(0) 推荐(0) 编辑
摘要: 使用Timer类对逻辑进行预设时,常用到两个方法,一个是schedual,另一个是schedualAtFixedRate。两者都有多种重载方法,当预设的执行时间在当前时间之后,那么两者执行的效果是完全一样;但是,反之,却出现一个很大的区别,就是追赶性。 schedual方法是不具备追赶性,而sche 阅读全文
posted @ 2019-01-27 15:15 KamShing 阅读(507) 评论(0) 推荐(0) 编辑
摘要: 上一篇讲到ReentrantLock是排他性,一方面保证了线程的绝对安全,但另一方面降低了效率。对于一些不需要操作实例变量的方法中,有另外一种锁可以提高运行效率,这种锁就是ReadWriteReentrantLock。 ReentrantReadWriteLock,也称为读写锁。读写锁有两个锁,一个 阅读全文
posted @ 2019-01-25 14:37 KamShing 阅读(166) 评论(0) 推荐(0) 编辑
摘要: 在Java多线程中,可以使用synchronized关键字来实现线程之间的同步互斥,但在JDK1.5中新增了Lock锁,同样可以实现同样的效果,并且扩展功能上也更加强大,比如嗅探锁定、多路分支通知等功能,而且使用上也更灵活。 Lock锁分为两类:ReentrantLock和ReentrantRead 阅读全文
posted @ 2019-01-25 14:32 KamShing 阅读(425) 评论(0) 推荐(0) 编辑