使用FileStream读取文件,它会阻塞吗?

时间:2013-03-25 16:10:44

标签: scala

所以在Scala中,当我使用java文件流lib时:

inStream = Option(new FileInputStream(file))
  ..
  in.read(imageData)
  Some(imageData)

会导致阻塞操作吗?换句话说,它应该包含在Future中以使其异步吗?

谢谢,

1 个答案:

答案 0 :(得分:4)

这是阻止操作。

将其包装在Future中不会使文件操作异步,但绑定来自Future执行程序服务/线程池的线程。 ..

<强>附录

JVM中的所有执行都发生在一个线程上。当使用Future时,发生封装计算的线程与发起Future的线程不同。当您使用旧的java.io时,操作会被阻止,无论您是直接调用还是将其移至Future

如果打算创建高并发系统,则根本不进行阻塞操作。使用Future和actors允许您实现高并发性,而不会产生每个I / O操作的高开销,但前提是I / O操作本身是非阻塞的