上一页 1 ··· 6 7 8 9 10 11 下一页
摘要: 多个线程操作同一个方法或变量时常常出现错误,要保证每个线程都正常运行就要通过加锁,每次只有一个能够拿到锁通过。如下: 如果没有synchronized 的话,运行结果如图。 不再是依次打印出名字,该关键字还可以加在代码块里。一般为了性能,我们要减少同步执行的代码数量(可以用同步代码块就不用同步方法) 阅读全文
posted @ 2017-10-19 23:16 烟味i 阅读(360) 评论(0) 推荐(0) 编辑
摘要: 执行结果: 之间学习并发编程并没有注意到Timer这个类,可能是被摒弃了吧。毕竟现在项目中的定时任务,可以使用组件quartz或者spring框架自带的Task。 我怀疑后面两种也是基于该类实现吧。 阅读全文
posted @ 2017-10-19 22:32 烟味i 阅读(267) 评论(0) 推荐(0) 编辑
摘要: 相比ArrayList,双链表的数据结构就复杂多了,想要弄清代码的意思还是要搞清数据结构层面的变化。 阅读全文
posted @ 2017-10-19 22:26 烟味i 阅读(251) 评论(0) 推荐(0) 编辑
摘要: 最近在学习数据结构和算法,书上有个ArrayList的简单实现,写的很不错。 注意理解current++和current-- 阅读全文
posted @ 2017-10-09 17:39 烟味i 阅读(291) 评论(0) 推荐(0) 编辑
摘要: Exchanger可以在两个线程之间交换数据,只能是2个线程,他不支持更多的线程之间互换数据。 当线程A调用Exchange对象的exchange()方法后,他会陷入阻塞状态,直到线程B也调用了exchange()方法,然后以线程安全的方式交换数据,之后线程A和B继续运行。 执行结果: 可以看到线程 阅读全文
posted @ 2017-09-06 11:09 烟味i 阅读(197) 评论(0) 推荐(0) 编辑
摘要: 代理模式就是控制对象的访问,客户访问代理对象,代理对象找真正的对象做事。包括静态代理,动态代理,虚拟代理,远程代理等。这里就简单些下静态代理和动态代理。 1.创建计算器接口 1 package cn.sp.test4; 2 3 /** 4 * Created by 2YSP on 2017/9/1. 阅读全文
posted @ 2017-09-06 10:52 烟味i 阅读(153) 评论(0) 推荐(0) 编辑
摘要: 定义:迭代器模式提供一种方法顺序访问一个聚合对象中的各个元素,而又不暴露其内部的表示。 1 package cn.sp.test1; 2 3 4 /** 5 * 菜单类 6 * Created by 2YSP on 2017/7/14. 7 */ 8 public class MenuItem { 阅读全文
posted @ 2017-07-14 11:18 烟味i 阅读(175) 评论(0) 推荐(0) 编辑
摘要: 根据开发文档可知,只要使用POST方式提交固定格式的json字符串到那个地址即可。这里我写的是最简单的文本 第一步:建立对应的实体类。 第二步:编写测试类: 这里是使用httpClient发起的请求,gson将对象转换为json字符串。 注意:openId至少为两个,否则返回报错不能发送,如果只有一 阅读全文
posted @ 2017-07-12 22:46 烟味i 阅读(2874) 评论(11) 推荐(1) 编辑
摘要: 一、Adapter模式 适配器模式将一个类的接口,转换成客户期望的另一个接口,适配器让原本接口不兼容的类可以合作无间。 生活中的例子就是,如果想让12V的笔记本电脑在220V的交流电下工作的话,就需要在中间增加一个适配器。 适配器模式有两种: 类适配器模式(使用继承实现的) 对象适配器模式(使用委托 阅读全文
posted @ 2017-06-01 22:35 烟味i 阅读(233) 评论(0) 推荐(0) 编辑
摘要: 测试类: 阅读全文
posted @ 2017-06-01 16:43 烟味i 阅读(271) 评论(0) 推荐(1) 编辑
上一页 1 ··· 6 7 8 9 10 11 下一页