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(...)
操作,则无法知道哪个线程将从流中读取哪些字符。根据某些定义,这将使使用成为非线程安全的。将字符分配到正确的线程通常对应用程序的正确性很重要。
我在 Java 中研究了扫描仪和 BufferedReader 之间的区别,我无法理解的一点是
扫描仪不同步,而 BufferedReader 同步。
现在谁能解释一下这是什么意思?
从字面上看,就是它所说的意思。 BufferedReader
API 的关键操作是使用 synchronized
块实现的,而 Scanner
中的等效操作不是。
这意味着 BufferedReader
可以 "safely" 在多个线程之间共享 1,而 Scanner
则不能。 Scanner
本质上是非线程安全的,即使它包装了一个线程安全的输入源。
1 - 实际上,这并不能免除您对线程的思考。如果您有多个线程在没有某种形式的协调的情况下对同一个 BufferedReader
调用 read(...)
操作,则无法知道哪个线程将从流中读取哪些字符。根据某些定义,这将使使用成为非线程安全的。将字符分配到正确的线程通常对应用程序的正确性很重要。