我有一个单例类:
public class School {
private HashMap<String, String> students;
private static School school;
private School(){
students = new HashMap<String, String>();
}
public static School getInstance(){
if(school == null){
school = new School();
}
return school;
}
//Method to add student
protected void addStudent(String id, String name){
students.put(id,name);
}
//Method to remove student
protected void removeStudent(String id){
students.remove(id);
}
}
正如您在上面看到的,在单例类中,我有一个students
变量 (a HashMap
),有一些方法可以在类中添加和删除学生。
在我的应用程序中,可能有多个线程使用这个School
类getInstance()
,然后添加和删除学生。为了使访问(尤其是对 students
实例的访问)是线程安全的,我正在考虑synchorized
为方法使用关键字getInstanc()
,例如:
public synchronized static School getInstance(){
if(school == null){
school = new School();
}
return school;
}
但我认为我的微不足道的改变只能确保在多线程环境中只创建一个实例。 School
我还需要做什么才能使其线程安全以通过多个线程访问 students
实例。有任何好的建议或意见,谢谢!