当我使用synchronized
在一个接口上的方法,所述编译器发出一个错误。 你能告诉我,为什么出现这种情况?
的原因是什么(逻辑),该synchronized
不能被应用到方法的上interface
?
我试图让超过线程池的接口在这个环节 。 帮助我,使界面在我上面的代码。
当我使用synchronized
在一个接口上的方法,所述编译器发出一个错误。 你能告诉我,为什么出现这种情况?
的原因是什么(逻辑),该synchronized
不能被应用到方法的上interface
?
我试图让超过线程池的接口在这个环节 。 帮助我,使界面在我上面的代码。
因为synchronized
是一个实现细节。 该方法的一个实施可能需要做出的方法进行同步,而另外一个可能不需要它。 来电者并不关心方法是否是同步或不同步。 这不是合同,它告诉方法做什么的一部分。 其中同步技术,如果有的话,是用来履行合同是无关紧要的。
同步是一个实现细节,并在接口不属于。
你可以有各种实现方式,可能是线程安全的,不涉及使用synchronized关键字。
您可以考虑使用一些注释,表明实现应该是线程安全的意图。 例如http://jetbrains.dzone.com/tips/concurrency-hot-try-jcip介绍了如何使用JCIP并发注解。
BTW。 而不是使用同步的,你可能想获得舒适与Java并发框架。 使用低级别的结构等直接同步被认为是一个位的抗图案的这些天。
简单的答案是同步在谈论方法实现,但在接口中的所有方法都是抽象的,这意味着没有实现。