为什么同步方法不包含在接口中

dev*_*sda 41 java oop multithreading

当我synchronized在接口中使用某个方法时,编译器会发出错误.你能告诉我为什么会这样吗?

(逻辑上)synchronized不能应用于某个方法的原因是interface什么?

我尝试在此链接中创建一个Interface over Threadpool .帮我在上面的代码中创建Interface.

JB *_*zet 74

因为synchronized是一个实现细节.该方法的一个实现可能需要使该方法同步,而另一个可能不需要它.调用者不关心方法是否同步.这不是合同,它讲述的部分是什么方法呢.使用哪种同步技术(如果有的话)来履行合同是无关紧要的.


Jil*_*urp 11

synchronized是一个实现细节,不属于接口.

您可以拥有各种可能是线程安全的实现,这些实现不涉及使用关键字synchronized.

您可以考虑使用一些注释来指示实现应该是线程安全的意图.例如,http: //jetbrains.dzone.com/tips/concurrency-hot-try-jcip解释了如何使用JCIP并发注释.

BTW.您可能希望熟悉java并发框架,而不是使用synchronized.如今,使用像synchronized这样的低级结构被认为是一种反模式.


小智 5

简单的答案是同步谈论方法实现,但在接口中所有方法都是抽象的,这意味着没有实现.