个人怎么自己建网站,网站布局策划,广州网站建设公司招聘,个人电脑做网站文章底部有个人公众号#xff1a;热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享#xff1f; 踩过的坑没必要让别人在再踩#xff0c;自己复盘也能加深记忆。利己利人、所谓双赢。 面试官#xff1a;如何实现互斥锁#xf… 文章底部有个人公众号热爱技术的小郑。主要分享开发知识、学习资料、毕业设计指导等。有兴趣的可以关注一下。为何分享 踩过的坑没必要让别人在再踩自己复盘也能加深记忆。利己利人、所谓双赢。 面试官如何实现互斥锁mutex
参考答案
在Java里面最基本的互斥同步手段就是synchronized关键字这是一种块结构Block Structured的同步语法。synchronized关键字经过Javac编译之后会在同步块的前后分别形成monitorenter和monitorexit这两个字节码指令。这两个字节码指令都需要一个reference类型的参数来指明要锁定和解锁的对象。如果Java源码中的synchronized明确指定了对象参数那就以这个对象的引用作为reference。如果没有明确指定那将根据synchronized修饰的方法类型如实例方法或类方法来决定是取代码所在的对象实例还是取类型对应的Class对象来作为线程要持有的锁。
自JDK 5起Java类库中新提供了java.util.concurrent包J.U.C包其中的java.util.concurrent.locks.Lock接口便成了Java的另一种全新的互斥同步手段。基于Lock接口用户能够以非块结构Non-Block Structured来实现互斥同步从而摆脱了语言特性的束缚改为在类库层面去实现同步这也为日后扩展出不同调度算法、不同特征、不同性能、不同语义的各种锁提供了广阔的空间。