Java并发编程-28-并发集合概述

来源:互联网 发布:amd cpu 温度 软件 编辑:程序博客网 时间:2024/04/24 12:15

一、基础概念

1、同步和异步 ----描述的是通信模式

同步:发送方发送请求后,需要等待接收方发回的响应后,才能发送下一个请求。所有的请求在服务器端得到同步,发送方和接收方对请求的处理步调是一致的

异步:发送方发送请求后,不等待接收方响应这个请求,就继续发送下一个请求。所有来自发送方的请求形成一个队列,接收方处理完成后通知发送方

2、阻塞和非阻塞 ---- 描述的是进程处理调用模式

阻塞:调用结果返回之前,当前线程从运行态被挂起,一直等到调用结果返回之前,才进入就绪态,获取cpu之后继续执行

非阻塞:如果调用结果不能立即返回,当前线程也不会被挂起,而是立即返回执行下一个调用

二、新的概念

1、同步阻塞

发送方 --->向接收方发送请求后,一直等待响应。接收方处理请求时进行的IO操作如果不能立马得到结果,就一直等到返回结果后,才响应发送方。期间不能进行其他工作。

比如:在超市排队付账时,客户(发送方)向收银妹子(接收方)付款(发送请求)后需要等待收银妹子找零(返回结果),期间不能离开,而收银妹子要等待收款机返回结果(IO操作)后才能把零钱返回给客户(响应请求),期间只能等待。

这种方式效率不高。

2、同步非阻塞

发送方 --->向接收方发送请求后,一直等待响应;接收方处理请求时进行的IO操作如果不能立马得到结果,就立即返回,去做其他事情。由于没有得到请求处理结果,不能响应发送方,发送方一直等待。一直等到IO操作完成后,接收方获得结果响应发送方后,接收方才进入下一次请求过程。

在实际中,不使用这种方式。

3、异步阻塞

发送方 --->向接收方发送请求后,不用等待结果响应,可以接着发送其他请求或者其他工作;接收方处理请求时进行的IO操作如果不能立马得到结果,就一直等到返回结果后,才响应发送方,期间不能进行其他工作。

在实际中,也不使用这种方式。

4、异步非阻塞

发送方 --->向接收方发送请求后,不用等待响应,可以继续其他工作;接收方处理请求时进行的IO操作如果不能立马得到结果,也不等待,而是马上返回做其他工作。当IO操作完成后,将完成状态和结果通知接收方,接收方再响应发送方。

比如:在超市排队付账时,客户(发送方)向收银妹子(接收方)付款(发送请求)后需要等待收银妹子找零(返回结果),期间可以打电话,聊微信,而收银妹子在等待收款机返回结果(IO操作)的过程中,可以帮助客户将商品打包,当收款机产生结果后,收款妹子给客户结账(响应请求)

这种方式效率很高。

三、Java提供的用于并发场景的集合

1、阻塞式集合

2、非阻塞式集合

3、随机数字对应的实现类

4、原子变量对应的实现类


四、阻塞式集合

这类集合包括添加和移除数据的方法。当集合已满或者为空时,被调用的添加或者移除方法就不能立即被执行,调用这个方法的线程被阻塞,一直到该方法可以被成功执行。对应的集合类名带有Blocking

五、非阻塞式集合

这类集合也包括添加和移除数据的方法。当集合已满或者为空时,被调用的添加或者移除方法就不能立即被执行,则返回null或者抛出异常,但调用这个方法的线程不会被阻塞。一般集合类名以Concurrent开头



0 0
原创粉丝点击