Ant*_*nio 25 java concurrency multithreading synchronization
在Java中,Java 1.0在类中java.io.InputStream有方法
public synchronized void mark(int readlimit) {}
Run Code Online (Sandbox Code Playgroud)
和
public synchronized void reset() throws IOException {
throw new IOException("mark/reset not supported");
}
Run Code Online (Sandbox Code Playgroud)
为什么这两种方法同步而其他方法都不同步?
有一些矛盾的事实表明synchronized关键字在这里只是一个错误:
当然,这只是开发人员的一个暗示.方法为空,synchronized关键字不在子类中继承.
另一方面,其他方法不同步,甚至是抽象和空方法.这意味着我们被警告不要忘记标记/重置的同步,但我们没有被警告有关并发read()调用.这没有意义,因为没有同步,并发读取将无法工作.
许多JDK流实现对同步关键字的使用不一致.
java.io.InputStream被放在对面java.nio.Buffer几乎没有有用的基本方法实现,但成为一个类.因此,它试图在这个"骨架提供"和宣布一般方法合同之间取得平衡.
| 归档时间: |
|
| 查看次数: |
1527 次 |
| 最近记录: |