现在我正面临多线程问题。我有一个类平台,它正在创建一个插件类实例,并在此同一个平台类之后设置其数据成员的值,再次创建另一个插件类实例并调用某种插件类方法。在第二个实例中,我想要第一个实例中已分配的数据成员的值,但是可以通过使用静态数据成员来实现。但是static关键字在多线程环境中会产生问题。我无权访问平台类,并且无法更改平台类的行为。因此,伙计们有任何方法可以在同一实例的第一个实例中分配的插件类的第二个实例中获取数据成员的值。
这是我的代码:
public class somePlugin implements IPluginExtension,IUtilsServer {
private IRegistrationInfo someRegInfo;
private OperationContext opContext;
public IRegistrationInfo getRegistrationInfo() {
if (someRegInfo == null)
someRegInfo = new someRegistrationInfo();
return someRegInfo;
}
public void setContext(OperationContext context) {
this.opContext = context;
}
public OperationContext getContext() {
return this.opContext;
}
}
因此,这里假设一个线程创建了somePlugin的一个实例并调用setContext()方法,现在同一线程创建了somePlugin的另一个实例并调用getRegistrationInfo()方法,这里我需要已在第一个实例中解决的opContext的值。因此,假设如果我对单个类的数据成员使用static关键字,那么在这种情况下,如果再有一个线程来,则该新线程必须使用由第一个线程确定的opContext更新值,而不是确切地在此处而是在应用程序运行时的某个位置。 / p>
在此先感谢您的有用建议.....