在Java中,“同步”是否等效于“同步(this)”?

sdgfsdh

我一直在寻找源代码,DatagramSocket发现了这一点:

public void disconnect() {
    synchronized (this) {
        if (isClosed())
            return;
        if (connectState == ST_CONNECTED) {
            impl.disconnect ();
        }
        connectedAddress = null;
        connectedPort = -1;
        connectState = ST_NOT_CONNECTED;
    }
}

我对同步方法的理解是它们会锁定this那么代码是否等效于以下代码?

public synchronized void disconnect() {
    if (isClosed())
        return;
    if (connectState == ST_CONNECTED) {
        impl.disconnect ();
    }
    connectedAddress = null;
    connectedPort = -1;
    connectState = ST_NOT_CONNECTED;
}

语言设计者为什么在这里选择不使用同步方法,这是有原因的吗?

姓名

是的,这两个代码段是等效的。

我们只能猜测,为什么编写此代码的人选择了更详细的版本。这可能是某人的个人喜好,也可能是历史文物。例如,它可能以前曾经synchronized(someObject)或仅覆盖过该方法的一部分,而重构该方法的人并没有将本synchronized节转换为synchronized方法。

本文收集自互联网,转载请注明来源。

如有侵权,请联系[email protected] 删除。

编辑于
0

我来说两句

0条评论
登录后参与评论

相关文章

来自分类Dev

等效于同步JS中的XMLHttpRequest超时

来自分类Dev

Common Lisp波尔多线程锁是否等效于Java同步?

来自分类Dev

同步语句-同步方法和同步语句是否等效?

来自分类Dev

原子操作是否需要Java中的同步

来自分类Dev

在线程程序中使用锁定机制是否等效于同步执行代码,而不是异步执行代码?

来自分类Dev

bean标签的parent属性是否等效于Java中的继承?

来自分类Dev

在Java中是否有等效于Python的exec()函数?

来自分类Dev

Java 中是否有等效于 URL 的 FileReader?

来自分类Dev

Java中的同步方法和同步块

来自分类Dev

Java中的同步和同步块

来自分类Dev

在Java中的实例同步

来自分类Dev

在Java中同步对象

来自分类Dev

Java中的对象同步

来自分类Dev

Python是否等效于Java的“密钥库”?

来自分类Dev

C ++是否等效于Java Map getOrDefault?

来自分类Dev

javascript中的map()是否同步?

来自分类Dev

$ .getJSON的同步等效方式

来自分类Dev

Java中的size(),put(),remove(),get()原子是否同步HashMap?

来自分类Dev

在Java中,是否需要将简单分配同步到静态?

来自分类Dev

Java中的CountDownLatch是否需要其他同步?

来自分类Dev

Java RabbitMQ Client中的ConfirmListener是否必须同步?

来自分类Dev

Java中的javascript setTimeout等效于什么?

来自分类Dev

在Swift中Java的instanceof等效于什么?

来自分类Dev

等效于Java中的类的getElementById

来自分类Dev

等效于Java中的OpenSSL命令

来自分类Dev

在Java中,stringByFoldingWithOptions:locale:等效于什么?

来自分类Dev

等效于Java 8中的LINQ

来自分类Dev

等效于Java中Perl的“ pack”功能

来自分类Dev

Swift中的Java Object等效于什么?

Related 相关文章

热门标签

归档