我是Java的新手我只是想知道如果Java中的整个类将被同步,那么可能出现的问题是什么?我知道类级别锁定的概念,这是不同的。
答案 0 :(得分:5)
标记整个班级synchronized
会产生误导。虽然有些情况下制作类synchronized
的所有方法非常有意义,但是类通常包含其他不能为synchronized
的声明。
例如,类构造函数不能标记为synchronized
。对于类的字段也是如此。可能会错误地假设标记为synchronized
的类中的字段将以同步方式访问,但这不是Java自动执行的操作。当然,语言设计者可以声明类级别上的synchronized
仅适用于方法,但这种决定在某种程度上是任意的。
答案 1 :(得分:0)
synchronized
关键字只能用于方法声明和synchronized
块。在方法声明中使用时,它与在方法内容周围添加synchronized
块相同,在this
上同步。没有什么可以阻止您同步类的每个方法。如果在每个方法声明上使用synchronized
关键字,这意味着只能同时执行该类的一个方法。在多线程应用程序中,这可能会导致性能不佳,但没有任何东西可以阻止您这样做。