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

2022-09-01 00:23:22

当我在接口中使用方法时,编译器会发出错误。你能告诉我为什么会发生这种情况吗?synchronized

(逻辑上)不能应用于方法的原因是什么?synchronizedinterface

我试图在这个链接中通过线程池制作一个接口。帮助我在上面的代码中制作界面。


答案 1

因为是实现细节。该方法的一个实现可能需要使该方法同步,而另一个实现可能不需要它。调用方不关心方法是否同步。它不是合同的一部分,合同告诉了方法的作用。使用哪种同步技术(如果有)来履行合同是无关紧要的。synchronized


答案 2

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

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

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

顺便说一句。您可能希望熟悉 Java 并发框架,而不是使用同步。如今,使用像直接同步这样的低级结构被认为是一种反模式。