在运行这个.I时,有什么方法可以获得线程安全缓冲阅读器code#获得以下信息吗?
Threadid=28 ObjectReference=de.factfinder.resource.Resource@1b7aeb4
Threadid=28 ObjectReference=java.io.InputStream@3d6fb9
Threadid=28 ObjectReference=java.io.InputStreamReader@171e0f6
Threadid=28 ObjectReference=java.io.BufferedReader@1684179
28 started Reading
Threadid=28 ObjectReference=de.factfinder.resource.Resource@1b7aeb4
Threadid=28 ObjectReference=java.io.InputStream@3d6fb9
Threadid=28 ObjectReference=java.io.InputStreamReader@171e0f6
Threadid=28 ObjectReference=java.io.BufferedReader@1684179
28 finished Reading
Threadid=38 ObjectReference=de.factfinder.resource.Resource@1bebf14
Threadid=38 ObjectReference=java.io.InputStream@3d6fb9
Threadid=38 ObjectReference=java.io.InputStreamReader@171e0f6
Threadid=38 ObjectReference=java.io.BufferedReader@1684179
38 started Reading
Threadid=38 ObjectReference=de.factfinder.resource.Resource@1bebf14
Threadid=38 ObjectReference=java.io.InputStream@3d6fb9
Threadid=38 ObjectReference=java.io.InputStreamReader@171e0f6
Threadid=38 ObjectReference=java.io.BufferedReader@1684179
38 finished Reading缓冲读取器、InputStreamReader和InputStream的哈希码仍然是same.Why?
发布于 2011-12-01 13:43:42
是
BufferedReader线程安全吗?
javadoc没有声明a BufferedReader是线程安全的,但是当我查看源代码时,我看到读取方法使用synchronize和内部lock对象。(您可以在http://www.docjar.com/html/api/java/io/BufferedReader.java.html为自己检查这个问题)
因此,答案可能是肯定的,尽管它可能取决于您正在使用的Java的实现和版本。
然而,还有两件事需要考虑:
BufferedReader是Reader的包装器,它通常是其他类的包装器。如果其他线程使用相同的"I/O堆栈“的部分,那么sufficient.BufferedReader是线程安全的这一事实--您有两个线程都试图从同一个BufferedReader中读取--您可能因为线程不协调而陷入麻烦。虽然单个读取操作的行为是原子性的,但操作序列却并非如此。简而言之,线程安全性不一定足以确保多线程应用程序不会出现问题。
BufferedReader、InputStreamReader和InputStream的哈希代码保持不变。为什么?
与先前创建的3个对象具有相同标识哈希码的3个新对象的概率非常小,因此我只能假设您每次创建新实例的假设/断言实际上是不正确的。
https://stackoverflow.com/questions/8342172
复制相似问题