天天看点

《代码整洁之道》—第13章13.6节警惕同步方法之间的依赖

本节书摘来自异步社区《代码整洁之道》一书中的第13章13.6节警惕同步方法之间的依赖,作者【美】robert c. martin,更多章节内容可以访问云栖社区“异步社区”公众号查看。

13.6 警惕同步方法之间的依赖

同步方法之间的依赖会导致并发代码中的狡猾缺陷。java语言有synchronized概念,可以用来保护单个方法。然而,如果在同一共享类中有多个同步方法,系统就可能写得不太正确了[12]。

建议:避免使用一个共享对象的多个方法。

有时必须使用一个共享对象的多个方法。在这种情况发生时,有3种写对代码的手段:

基于客户端的锁定——客户端代码在调用第一个方法前锁定服务端,确保锁的范围覆盖了调用最后一个方法的代码;

基于服务端的锁定——在服务端内创建锁定服务端的方法,调用所有方法,然后解锁。让客户端代码调用新方法;

适配服务端——创建执行锁定的中间层。这是一种基于服务端的锁定的例子,但不修改原始服务端代码。