Java并发
文章平均质量分 79
介绍Java并发相关知识
半岛铁盒里的猫
一个热爱足球和音乐,带有一定程度文艺气息的主流程序员。
展开
-
java多线程设计模式笔记之Single Thread Execution
现在有三个人要循环随机通过一个门,三个人的名字和国家首字母都一样,每当一个人通过门的时候,就检查这个人和国家是否一致,不一致则报错BROKEN.程序如下:门:import java.awt.Checkbox;public class Gate { private int count = 0; private String name = "Nobody"; private Str原创 2016-09-15 14:55:19 · 1330 阅读 · 0 评论 -
java多线程设计模式之Immutable Pattern
上一篇讲了Single Thread Execution模式,主要使用了synchronized对某一个代码加锁,防止被多个线程同时访问导致数据出错。这一篇讲下不需要synchronized的情况。因为synchronized是一种开销大的操作,所以能避免使用尽量避免。之前使用它可以避免由于实例的状态被多个线程同时访问修改导致数据出错,那么假设一个实例的状态根本不可以改变,那么即使多个线程访问原创 2016-09-25 12:40:15 · 902 阅读 · 0 评论 -
java多线程设计模式之Guarded Suspension
想象一个场景,你在排队领军训的装备,当你排队到窗口的时候,工作人员对你说,等一下,让我叫后勤先去仓库取下装备再给你,于是你等到工作人员取回装备才能领走装备。抽象为一个java程序模型:你是一个线程ClientThread,负责取数据Request,暂时存放装备的窗口是一个队列RequestQueue,后勤人员是一个存放装备的线程ServerThread,于是可以用一下代码表示:首先是存放数原创 2016-10-22 14:44:36 · 1161 阅读 · 3 评论 -
java多线程设计模式之消费者生产者模式
所谓生产者,就是产生数据的线程,消费者,就是使用数据的线程。两个线程的速度差将成为最大的问题,而该模式就是缓冲两者的速度差。一般来说,生产者和消费者会有多个。以下是典型的例子程序。假设一个场景,有一个桌子Table,有若干个厨师MakerThread往桌子上按顺序放上蛋糕,有若干个顾客EaterThread按顺序吃蛋糕:首先是厨师MakerThread:public class M原创 2016-11-06 18:35:48 · 995 阅读 · 0 评论 -
java多线程设计模式Worker Thread(线程池)
想象一个场景,一个工厂在生产玩具,在一个车间里,有几个工人,每次生产部件准备好车间外的人就将部件放到车间的一个桌子上,工人每次做完一个玩具就从桌子上取部件。在这里,注意到,部件并不是直接交给工人的,另外一点,工人并不是做完一个部件就回家换个新人,后者在现实有点滑稽,但是在程序中却对应一个典型的线程使用方法:线程池。所谓线程池,就是对线程的复用,当线程执行完任务之后就继续取其他任务执行,而不是销原创 2016-11-13 13:32:24 · 6541 阅读 · 1 评论 -
java多线程设计模式之ReadWriteLock(读写锁)
在之前的模式中,为了确保线程安全,每次读写数据只允许一个线程操作数据类对象,但是多线程同时读数据也是安全的,所以为了提升性能,是不是可以有一种模式,允许同时多线程读,但是只能一条写线程在操作数据类对象呢?答案是肯定的。现在就来介绍下读写锁模式。 Java并发包中有读写锁类ReadWriteLock,他的功能是使得当多个线程读和多个线程写同一块数据的情况下,允许多线程同时读,但是有线原创 2016-11-19 20:17:25 · 593 阅读 · 0 评论 -
java多线程设计模式笔记之Future Pattern
想象一个场景,你去蛋糕店买蛋糕,先下订单之后,店员给你一张提货单,叫你下午来取货,下午你来取蛋糕,如果此时蛋糕已经做好了,则拿走蛋糕,如果没有做好,则你还得再等等。相对应的程序场景,主线程要得到某些数据需要耗时操作,于是开了个子线程去生产数据,然后主线程去做别的事,等一段时间之后再去取回数据,实现了异步回调。 看代码~~首选是Data接口,表示数据:public interfac原创 2016-11-26 19:00:57 · 1040 阅读 · 0 评论 -
java多线程设计模式笔记之Active Object
今天要说的模式是前几个模式的综合体,也是这个系列的最后的一个模式,叫做接受异步消息的主动对象。与之相关的模式有java多线程设计模式之Future Pattern、 java多线程设计模式之消费者生产者模式、 java多线程设计模式之Guarded Suspension等,如果不了解这几个模式,最好先看下这几个模式。何为主动对象,一般来说是指自己拥有独立的线程的对象,在这里不只是拥有独立线原创 2016-12-04 11:16:48 · 501 阅读 · 0 评论