码迷,mamicode.com
首页 > 编程语言 > 详细

Java千百问_01基本概念(015)_阻塞、非阻塞有什么区别

时间:2016-06-26 09:10:41      阅读:209      评论:0      收藏:0      [点我收藏+]

标签:

点击进入_更多_Java千百问

1、阻塞、非阻塞有什么区别

在进行网络编程时,我们通常会看到同步、异步、阻塞、非阻塞四种调用方式以及他们的组合。
了解同步、异步看这里:同步、异步有什么区别
其中阻塞方式、 非阻塞方式主要是针对服务端(server)的,具体如下:

阻塞(Block)

阻塞调用是指调用结果返回之前,当前线程会被挂起。挂起即线程进入非可执行状态,在这个状态下,cpu不会给线程分配时间片,即线程暂停运行

了解线程的状态看这里:线程的状态有哪些
阻塞调用会让线程一直进行等待,当调用没有执行完就有另一次请求,这是会开启一个新的线程来执行,会占用更多的线程资源。

由于阻塞线程的大部分时间都浪费在等待请求上了,所以并不能处理过多的请求。

非阻塞(Unblock)

非阻塞是相对阻塞来说的,是指调用不会阻塞当前线程,而会立刻返回

非阻塞是通过轮询不断去询问数据是否准备好了,如果准备好了主动获取数据。在这期间线程没有挂起

非阻塞处理连接的线程数请求数没有联系,也就是说很多个请求可以通过相对较少的线程进行处理。

总结来说, 阻塞和非阻塞的区别:请求发出后,没有数据到达时,是否立刻返回。

Java千百问_01基本概念(015)_阻塞、非阻塞有什么区别

标签:

原文地址:http://blog.csdn.net/ooppookid/article/details/51761325

(0)
(0)
   
举报
评论 一句话评论(0
登录后才能评论!
© 2014 mamicode.com 版权所有  联系我们:gaon5@hotmail.com
迷上了代码!