摘要: 类修饰符: public(访问控制符),将一个类声明为公共类,他可以被任何对象访问,一个程序的主类必须是公共类 abstract,将一个类声明为抽象类,没有实现的方法,需要子类提供方法实现 final,将一个类声明为最终(即非继承类),表示他不能被其他类继承 成员变量修饰符: public(公共访问 阅读全文
posted @ 2017-11-29 18:06 優syousetu 阅读(137) 评论(0) 推荐(0) 编辑
摘要: Java数组去重 一、用List集合实现 上述代码可以实现去除重复的元素,但是没有实现排序功能 二、用hashSet或者TreeSet实现 输出结果:5 6 7 8 11 12 可以看到不仅去除了重复的数据,而且将数据进行了排序 其中Arrays.asList()是将一个数组转换为一个list对象, 阅读全文
posted @ 2017-11-22 17:48 優syousetu 阅读(94) 评论(0) 推荐(0) 编辑
摘要: 为了更好的控制多线程,JDK提供了一套线程框架Executor,帮助开发人员有效的进行线程控制。他们都在Java.utilconcurrent包中,是JDK并发包的核心。其中有一个比较重要的类:Executors,他扮演着线程工厂的角色,我们通过Executors可以创建特定功能的线程池。 Exec 阅读全文
posted @ 2017-04-24 22:50 優syousetu 阅读(180) 评论(0) 推荐(0) 编辑
摘要: 生产者消费者也是一个非常经典的多线程模式,我们在实际开发中应用非常广泛的思想理念。在生产者-消费模式中:通常由两类线程,即若干个生产者的线程和若干个消费者的线程。生产者线程负责提交用户请求,消费者线程则负责具体处理生产者提交的任务,在生产者和消费者之间通过共享内存缓存区进行通信。 MQ:messag 阅读全文
posted @ 2017-04-24 15:53 優syousetu 阅读(317) 评论(0) 推荐(0) 编辑
摘要: Master-worker模式是常用的并行计算模式。它的核心思想是系统是由两类进程协助工作:Master进行和worker进程。Master负责接收和分配任务,worker负责处理子任务。当各个worker子进程处理完成后,会返回结果给master,由master做归纳和总结。其好处是能将一个大任务 阅读全文
posted @ 2017-04-24 12:10 優syousetu 阅读(214) 评论(0) 推荐(0) 编辑
摘要: 并行设计模式属于设计优化的一部分,它是对一些常用的多线程结构的总结和抽象。与串行程序相比,并行结构的程序通常更为复杂。因此合理的使用并行模式在多线程开发中更具有意义,在这里主要介绍future、master-woeker和生产者-消费者模型。 future模式有点类似于商品订单。比如在网购时,当看中 阅读全文
posted @ 2017-04-24 09:46 優syousetu 阅读(195) 评论(0) 推荐(0) 编辑
摘要: Deque允许在队列的头部或尾部进行出队和入队操作 LinkedBlockingDeque是一个线程安全的双端队列实现,可以说他是最为复杂的一种队列,在内部实现维护了前端和后端节点,但是其没有实现读写分离,因此同一时间只能有一个线程对其进行操作。在高并发中性能要远低于其他BlockingQueue。 阅读全文
posted @ 2017-04-24 08:30 優syousetu 阅读(142) 评论(0) 推荐(0) 编辑
摘要: 在并发队列上JDK提供了两套实现,一个是以ConcurrentLinkedQueue为代表的高性能队列,一个是以BlockingQueue接口为代表的阻塞队列,无论是哪种,都继承自Queue ConcurrentLinkedQueue:是一个适用于高并发场景下的队列,通过无锁的方式,实现了高并发状态 阅读全文
posted @ 2017-04-19 11:51 優syousetu 阅读(154) 评论(0) 推荐(0) 编辑
摘要: JDK5.0以后提供了多种并发类容器来替代同步类容器从而改善性能。同步类容器的状态都是串行化的。他们虽然实现了线程安全,但严重降低了并发性,在多线程环境时,严重降低了应用程序的吞吐量。并发类容器是专门针对并发设计的,使用ConcurrentHashMap来代替给予散列的传统的hashTable,而在 阅读全文
posted @ 2017-04-18 21:16 優syousetu 阅读(191) 评论(0) 推荐(0) 编辑
摘要: 同步类容器都是线程安全的,但在某些场景下需要加锁来保护复合操作。复合类操作如:迭代(反复访问元素,遍历完容器中所有的元素)、跳转(根据指定的顺序找到当前元素的下一个元素)、以及条件运算。这些复合操作在多线程并发的修改容器时,可能会表现出意外的行为,最经典的便是ConcurrentModificati 阅读全文
posted @ 2017-04-18 19:55 優syousetu 阅读(88) 评论(0) 推荐(0) 编辑