【发布时间】:2011-12-23 06:23:26
【问题描述】:
似乎找不到任何关于输入流“阻塞”的信息,它既描述了它是什么,也描述了它何时发生。这是某种类型的多线程防止并发线程访问同一流吗?
关于这一点,当两个并发线程同时访问同一个流时,这会导致问题,还是两个线程都有自己的流指针?显然,需要等待,但希望它不会导致未经检查的异常。
【问题讨论】:
标签: java multithreading stream io
似乎找不到任何关于输入流“阻塞”的信息,它既描述了它是什么,也描述了它何时发生。这是某种类型的多线程防止并发线程访问同一流吗?
关于这一点,当两个并发线程同时访问同一个流时,这会导致问题,还是两个线程都有自己的流指针?显然,需要等待,但希望它不会导致未经检查的异常。
【问题讨论】:
标签: java multithreading stream io
在输入流的上下文中,“阻塞”通常是指等待更多可用数据的流。如果您考虑套接字而不是文件,该术语可能更有意义。
如果您有多个线程同时从同一个流中读取,您必须自己进行同步。没有特定于线程的“流指针”。同样,考虑从同一个套接字(而不是从一个文件)读取多个线程。
【讨论】:
每个流都有一个流指针。让两个线程读取同一个流没有多大意义。
【讨论】:
“阻塞”是指读取或写入挂起,同时等待更多信息(用于读取)或某些内部缓冲区中的更多空间(用于写入),然后将控制权返回给调用线程。
而且我很确定流对象负责自己的读/写位置,因此指针只指向流对象,该对象从自己的缓冲区中读取。因此,如果您正在使用同步方法进行阅读,那么每次阅读都会等待轮到它,并获得有凝聚力(但不重叠)的数据。如果方法不同步,那么我很确定一切都会崩溃。
【讨论】: