请教如何在abstract类前面加上synchronized? 设计一个抽象类,该类的一个抽象方法需要同步控制,不知道应该如何做才好? 解决方案 » 免费领取超大流量手机卡,每月29元包185G流量+100分钟通话, 中国电信官方发货 abstract方法是不能声明为synchronized的,应该在子类中提供该方法的实现时,再声明synchronized。原因很简单,你在abstract类中尚不知道如何实现该方法,哪里来的同步需求呢? 类的前面是不可能加上synchornized的,这个关键字就不是修饰类的。 如果abstract方法是不能声明为synchronized的,请帮忙设计一下这个抽象类吧。我需要在抽象类里限制抽象方法的并发访问,以免使用该抽象类的其他人员访问出错。 public abstract class Test { public final synchronized void method() { methodImpl(); } protected abstract void methodImpl();}method()方法开放给一般使用人员,子类在methodImpl()方法中实现需要的功能。 坦率的说就解决方案来说,gtlang78()是个方法,但不是个好方法,第一,public接口是一个承诺,每实现一个public接口都必须慎重考虑,尤其是在abstract class中,因为虚类正是为了继承而存在的,如此public的实现就更加慎重之又慎了,不要因为期望实现某种功能而强行定义接口。第二,abstract method正是为了让其下继承的对象自行选择其实现方式,一般abstract method的设计者很难对具体功能做出超前的判断,既然必须由子类实现,自然也应该由子类自我决定该method是否应该被实现synchronized,所以对abstract method进行synchronized不是一个好主意。 我需要在抽象类里限制抽象方法的并发访问,以免使用该抽象类的其他人员访问出错。既然你的抽象方法现在只是个声明,具体它在子类中会干什么,你一点也不知道,你似乎没必要担心上面的问题。如果它确实需要同步,子类实现者自然会考虑到,如果不需要同步,你在父类中加以限制就显得多余了。我也意识到 gtlang78() 的方法有问题了,虽然methodImpl被声明为protected,但这不能阻止在子类中将它覆盖为public,这样,使用子类的人就会直接调用methodImple,而绕过method我还是坚持我最初的观点吧。呵呵。 各位大虾,我是java新手,我想请教下为什么我Swing添加背景图片没加进去呢,代码如下: java指令控制打印机打印小票 请个问大哥帮小弟解开这个疑惑,感激不尽 在selvet里面调用socket方法,但特别慢 ssi包含问题 readLine的判断条件是\n还是\r还是\r\n? 一个解决问题的好地方!! 请教大家推荐几本学java的入门书籍 一个包中的类要调用另一个包中的类应该怎么样编译才能通过? SQL Server 2000 JDBC applet连接数据库??? 请问怎么使用剪贴板类阿? 高手帮我看看为什么会死锁?
我需要在抽象类里限制抽象方法的并发访问,以免使用该抽象类的其他人员访问出错。
{
public final synchronized void method() {
methodImpl();
}
protected abstract void methodImpl();
}method()方法开放给一般使用人员,子类在methodImpl()方法中实现需要的功能。