加锁的第一种方式:
public class RootBeanDefinition{
final Object constructorArgumentLock = new Object();
final Object postProcessingLock = new Object();
public void registerExternallyManagedConfigMember(Member configMember) {
synchronized (this.postProcessingLock) {
if (this.externallyManagedConfigMembers == null) {
this.externallyManagedConfigMembers = new HashSet<Member>(1);
}
this.externallyManagedConfigMembers.add(configMember);
}
}
public Method getResolvedFactoryMethod() {
synchronized (this.constructorArgumentLock) {
Object candidate = this.resolvedConstructorOrFactoryMethod;
return (candidate instanceof Method ? (Method) candidate : null);
}
}
}
未完......
本文深入探讨了Java中使用synchronized关键字实现同步的具体方法。通过两个示例,详细讲解了如何在RootBeanDefinition类中利用不同的锁对象来确保线程安全。一方面,在registerExternallyManagedConfigMember方法中使用postProcessingLock来管理成员配置;另一方面,getResolvedFactoryMethod方法则通过constructorArgumentLock来控制对工厂方法的访问。
949

被折叠的 条评论
为什么被折叠?



