我对java有一个基本的疑问。
假设有一个A类,其中包含同步方法M.如果我为A类创建一个对象A1并访问该同步方法M,则对象A1被同步方法M锁定。
我正在创建一个返回类型为Hashtable的方法(在内部是一个同步的方法)它是否像上面的方法一样运行?在执行返回类型为Hashtable的方法之前,整个对象是否无法访问?
答案 0 :(得分:0)
不,整个对象将无法访问。
但是会发生的是所有标记为synchronized
的其他方法将阻塞,直到返回Hashtable的方法完成(通过返回值,抛出异常等)。 / p>
换句话说,如果方法M和N都是同步的,考虑到相同的对象实例,则无法处理直到另一个完成。并且可以随时执行未同步的方法A:)
顺便说一下,如果你需要更复杂的同步化,你可以在任何Object
上进行同步......但通常在方法名称之前的关键字就足够了。