函数式接口-并发锁实现例子

什么叫函数式接口?

有且仅有一个抽象方法的接口(不包括默认方法、静态方法以及对Object方法的重写)

函数式接口不同于以往的普通接口,它最大的作用其实是为了支持行为参数传递,比如传递Lambda、方法引用、函数式接口对应的实例对象等。

大概讲一下函数式接口方法传递的使用方法

背景:我们执行业务数据更新的时候需要对相关业务ID进行数据库加锁,不然会在同一个时刻由不同的用户对同一条数据进行Update操作;加锁的组件是在update之前进行加锁,在进行数据库操作方法save,最后再解锁,为了写成公共的逻辑,采用函数式接口把save方法传到加锁组件里面,因为对应各种业务场景save的操作有不一样的;

定义函数式接口入参变量
加锁并执行方法
加锁方法调用

doBusiLock方法参数有三个:

Action action:加锁过程中需要执行的方法体;

String lockId:锁粒度,一般是业务编号;

 String lockType:锁类型,是哪一种业务类型,有可能同一个业务编号存在多种类型操作;

重点说一下Action action,外面调用传参是一个方法save(busiIno),进入方法体后action.doAction()其实执行的就是save(busiIno),俗话说就是被替换了;

©著作权归作者所有,转载或内容合作请联系作者
平台声明:文章内容(如有图片或视频亦包括在内)由作者上传并发布,文章内容仅代表作者本人观点,简书系信息发布平台,仅提供信息存储服务。

推荐阅读更多精彩内容