扫描仪的含义不同步

时间:2016-04-17 05:22:47

标签: java java.util.scanner bufferedreader

我正在阅读Java中的扫描程序和BufferedReader之间的差异,而我无法理解的一点就是说

当BufferedReader为。

时,扫描程序未同步

现在有人可以解释一下这意味着什么吗?

1 个答案:

答案 0 :(得分:3)

从字面上看,它意味着它所说的。 BufferedReader API的关键操作是使用synchronized块实现的,而Scanner中的等效操作则不是。

这意味着BufferedReader可以安全地"在多个线程 1 之间共享,而Scanner则不能。 Scanner本质上是非线程安全的,即使它包装了一个线程安全的输入源。

1 - 实际上,这并不能免除你思考线程。如果您在同一read(...)上有多个线程调用BufferedReader操作而没有某种形式的协调,那么就无法知道哪个线程将从流中读取哪些字符。根据某些定义,这将使用法非线程安全。将字符配置到正确的线程通常对应用程序的正确性很重要。