scanner isn't synchronized 的意思

Meaning of scanner isn't synchronized

我在 Java 中研究了扫描仪和 BufferedReader 之间的区别,我无法理解的一点是

扫描仪不同步,而 BufferedReader 同步。

现在谁能解释一下这是什么意思?

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

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


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