我的问题是:
search_text.addModifyListener(new ModifyListener() {
@Override
public void modifyText(ModifyEvent e) {
ArrayList<Object> GPDMvalue = (ArrayList<Object>) multiSortList.getValue();
ArrayList<Map<String, Object>> valueList = getDefaultValue(GPDMvalue);
multiSortList.clear();
if(getGPDMList().size()==0)return;
multiSortList.setDataSource(getGPDMList());//new thread 1
multiSortList.setDefaultOrAddValue(valueList);//new thread 2
}
});
当文本变化太快,并且线程1或线程2没有完全执行,并且可能有些问题,所以我想添加synchronized
这样的
public synchronized void modifyText(ModifyEvent e)
,
这仍然是一种覆盖方法,它会起作用吗?
答案 0 :(得分:5)
答案 1 :(得分:3)
添加synchronized
关键字不会妨碍覆盖方法(它仍会被覆盖),因为method's signature保持不变。
有关详细信息,请参阅JLS-§9.4.1.3
答案 2 :(得分:3)
您可以覆盖已同步的方法,也可以删除synchronized关键字。
abstract class SynchronizedClass {
public synchronized String myIterfaceMethod(String str){
return str;
}
}
public class OverrideSynchronozied extends SynchronizedClass{
@Override
public String myIterfaceMethod(String str){
return str;
}
public static void main(String[] args) {
SynchronizedClass ss = new OverrideSynchronozied();
System.out.println(ss.myIterfaceMethod("Class Instance"));
}
}