- html - 出于某种原因,IE8 对我的 Sass 文件中继承的 html5 CSS 不友好?
- JMeter 在响应断言中使用 span 标签的问题
- html - 在 :hover and :active? 上具有不同效果的 CSS 动画
- html - 相对于居中的 html 内容固定的 CSS 重复背景?
基于此question我想请教以下问题。假设阻塞 I/O 并且我有一段如下代码:
byte[] data = new byte[10];
someInputStream.read(data)
此代码片段将阻塞 read
调用,直到它有一些字节要读取为止。我很熟悉 read
实际上可能会读取更少的字节,并且读取的字节数将由 read
方法返回。
我的问题是这样的。假设我有:
byte[] data = new byte[10];
if (someInputeStream.available() >= 10) {
someInputStream.read(data); // ***
}
***
行是否保证不阻塞?同样,我知道这次读取可能仍读取不到 10 个字节。
最佳答案
保证不阻塞
来自Javadoc对于 InputStream
,查看 available()
方法:
Returns an estimate of the number of bytes that can be read (or skipped over) from this input stream without blocking by the next invocation of a method for this input stream. The next invocation might be the same thread or another thread. A single read or skip of this many bytes will not block, but may read or skip fewer bytes.
(强调我的。)
所以它不会阻塞,但是(如您所说)您可能无法获得完整的 10 个字节。
请注意,这是假设单线程。如果有多个线程,那么当然另一个线程可能已从 available()
和 read()
之间的流中读取数据。
关于java - 可用并读取 : can we actually be nonblocking while using blocking Java I/O?,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/26427436/
IBM(请参阅源代码)阐述了 Java 1.5 java.util.concurrent 类的优点,该类提供非阻塞队列。 请在下面解释 NonBlockingCounter 的弱点/缺点。 publi
众所周知,某些阻塞调用,例如read和write将返回-1并将errno设置为EINTR,我们需要对此进行处理。 我的问题是:这是否适用于非阻塞调用,例如,将套接字设置为O_NONBLOCK? 由于我
我有一个使用非阻塞套接字运行的简单 TCP 服务器。 引用自 recv 的联机帮助页; When a stream socket peer has performed an orderly shutd
我无法理解任何数据结构如何“非阻塞”。 假设您正在创建一个“非阻塞”哈希表。在某些时候,您的散列表变得太满,因此您必须重新散列到一个更大的表中。 这意味着您需要分配内存,这是一种全局资源。所以看起来您
我有一个回调想执行一次。为了争论起见,我们假设它看起来像这样: final X once = new X(1); Runnable r = new Runnable() { @Override
我使用MPI非阻塞通信(MPI_Irecv, MP_Isend)来监控slaves的空闲状态,代码如下。 排名 0: int dest = -1; while( dest <= 0){ int
我正在努力在 epoll 和 kqueue 标志之间画一条平行线,特别是 EPOLLONESHOT EPOLLET EPOLLEXCLUSIVE 和 EV_CLEAR/EV_DISPATCH/EV_O
我正在尝试使用 O_NONBLOCK 模式创建命名管道,并在单独的线程中使用“SELECT”方法监听读取事件。当我在主线程中休眠一段时间后试图关闭程序时出现问题。我希望当使用 close 方法关闭命名
我是 Node 新手,并尝试了解 Node 的非阻塞性质。 在下图中,我创建了请求的高级图表。 据我了解,单个用户针对单个应用程序的所有进程都在单个线程上运行。 我想了解的是事件循环的逻辑如何适合该图
基于此question我想请教以下问题。假设阻塞 I/O 并且我有一段如下代码: byte[] data = new byte[10]; someInputStream.read(data) 此代码片
在 Ubuntu 16.04 服务器(内核 4.4.0-22)上,根据/var/log/syslog,与 Ubuntu 14.04 相比,初始化“随机:非阻塞池”需要 2-5 分钟: May 28 1
我是一名优秀的程序员,十分优秀!