博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
java锁的理解
阅读量:7023 次
发布时间:2019-06-28

本文共 627 字,大约阅读时间需要 2 分钟。

  hot3.png

锁提供了两种主要特性:互斥(mutual exclusion) 和可见性(visibility)

互斥:即一次只允许一个线程持有某个特定的锁,因此可使用该特性实现对共享数据的协调访问协议,这样,一次就只有一个线程能够使用该共享数据。

可见性:必须确保释放锁之前对共享数据做出的更改对于随后获得该锁的另一个线程是可见的 —— 如果没有同步机制提供的这种可见性保证,线程看到的共享变量可能是修改前的值或不一致的值,这将引发许多严重问题。

锁的可重入性

public class Reentrant{    public synchronized outer(){        inner();    }    public synchronized inner(){        //do something    }}

注意outer()和inner()都被声明为synchronized,这在Java中和synchronized(this)块等效。如果一个线程调用了outer(),在outer()里调用inner()就没有什么问题,因为这两个方法(代码块)都由同一个管程对象(”this”)所同步。如果一个线程已经拥有了一个管程对象上的锁,那么它就有权访问被这个管程对象同步的所有代码块。这就是可重入。线程可以进入任何一个它已经拥有的锁所同步着的代码块。

转载于:https://my.oschina.net/haoqoo/blog/467764

你可能感兴趣的文章
2016第5周三
查看>>
Spring学习10-SpringMV核心组件2及SpringMVC项目示例
查看>>
hdu 5620 KK's Steel(推理)
查看>>
(笔记)电路设计(十五)之基本电路单元的认识
查看>>
nginx 日志获取不到远程访问ip问题解决
查看>>
有若干个字符串,比較找出当中最大者
查看>>
开源 免费 java CMS - FreeCMS2.0 会员我的评论
查看>>
Servlet 工程 web.xml 中的 servlet 和 servlet-mapping 标签 《转载》
查看>>
数据库读写分离的初步理解
查看>>
[转]window下使用SetUnhandledExceptionFilter捕获让程序的崩溃
查看>>
Centos7安装完毕后重启提示Initial setup of CentOS Linux 7 (core)的解决方法
查看>>
Codeforces Beta Round #9 (Div. 2 Only) A. Die Roll 水题
查看>>
swift和 oc 混编2-备
查看>>
2015-2016-2 《Java程序设计》 游戏化
查看>>
代码的组织机制
查看>>
html基础之 input:type
查看>>
json-lib简单处理json和对json的简单介绍
查看>>
SQL学习之用通配符进行数据过滤
查看>>
jquery checkbox选中、改变状态、change和click事件
查看>>
java joor 实现反射简单调用
查看>>