当前位置: 首页 > 面试题库 >

sync(this)vs syncize(MyClass.class)

邢焱
2023-03-14
问题内容

我正在阅读有关同步的文章。我对以下几点感到困惑,需要进一步说明

1)用于同步块。怎么样

   synchronize(this){
    // code
   }

不同于

   synchronize(MyClass.class){
    //code
   }

2)同步实例方法意味着线程将必须获得实例的排他锁,而同步静态方法意味着线程将必须获得整个类的锁(如果我错了,请纠正我)。因此,如果一个类具有三个方法,并且其中一个是静态同步的,则如果线程获取该方法的锁,则意味着它将获取整个类的锁。那么这是否意味着其他两个方法也将被锁定,并且当整个类都处于锁定状态时,其他方法将无法访问这两个方法?


问题答案:

MyClass.class并且this是不同的事物,它们是对不同对象的不同引用。

this -是对该类特定实例的引用,并且

MyClass.class-是对MyClass描述html" target="_blank">对象的引用。

这些同步块中,第一同步将与具体处理的所有线程不同 这个 实例MyClass,而第二个将同步 所有 线程独立哪个对象的在其上调用的方法。



 类似资料:
  • sync(将缓冲区数据写回磁盘) 相关函数 fsync 表头文件 #include<unistd.h> 定义函数 int sync(void) 函数说明 sync()负责将系统缓冲区数据写回磁盘,以确保数据同步。 返回值 返回0。 范例: 无

  • SYNC 用于复制功能(replication)的内部命令。 更多信息请参考 Redis 官网的 Replication 章节 。 可用版本: >= 1.0.0 时间复杂度: 不明确 返回值: 不明确 redis> SYNC "REDIS0002\xfe\x00\x00\auser_id\xc0\x03\x00\anumbers\xc2\xf3\xe0\x01\x00\x00\tdb_number

  • 描述 (Description) 它使用Backbone.sync将集合的状态持久保存到服务器。 语法 (Syntax) collection.sync(method, collection, options) 参数 (Parameters) method - 它表示CRUD操作,如创建,读取,更新和删除。 collection - 它包含一组用于保存集合中数据的模型。 options - 根据

  • 描述 (Description) 它可用于与服务器通信并表示模型的状态。 语法 (Syntax) model.sync(method,model,options) 参数 (Parameters) method - 它表示CRUD操作,如创建,读取,更新和删除。 model - 用于保存模型上的数据。 options - 根据成功的方法触发成功或错误消息。 例子 (Example) <!DOCTY

  • 它用于将模型的状态持久保存到服务器。 下表列出了可用于操作BackboneJS-Sync - S.No. 方法和描述 1 Backbone.sync 它将模型的状态持久保存到服务器。 2 Backbone.ajax 它定义了自定义ajax函数。 3 Backbone.emulateHTTP 如果您的Web服务器不支持REST或HTTP方法,请打开Backbone.emulateHTTP。 4 Ba

  • import "sync" sync包提供了基本的同步基元,如互斥锁。除了Once和WaitGroup类型,大部分都是适用于低水平程序线程,高水平的同步使用channel通信更好一些。 本包的类型的值不应被拷贝。 type Locker type Once func (o *Once) Do(f func()) type Mutex func (m *Mutex) Lock() func (m *