java.util.concurrent.locks

接口Lock

publci interface Lock

Lock 实现提供了比使用synchronized方法和语句可获得的更加广泛的锁定操作,

此实现允许更灵活的结构,可以具有差别很大的属性,可以、支持多个相关的Condition对象。

锁是多个线程对共享资源的访问工具,通常,所提供了对共享资源的独占访问。

一次只可以有一个线程访问共享资源,不过某些锁提供对共资源的并发访问,如:

ReadWriterLock的读取锁。

synchronized 方法或语句的使用提供了对与每个对象相关的隐式监视器锁的访问,

但却强制所有锁获取和释放均要出现在一个块结构中:当获取了多个锁时,

它们必须以相反的顺序释放,且必须在与所有锁被获取时相同的词法范围内释放所有锁。

//使用ThreadLocal类来管理共享资源

public class  ThreadLcoal<T> extends Object

该类提供了线程局部(thread-local)变量。这些变量不同与普通变量对应的物

因为访问该个变量(通过其get或set方法)的每个线程都有自己的局部变量,

他独立与变量初始化副本。ThreadLocal实例通常是类中的private static 字段

他们希望将状态与某一线程(例如:用户ID,事物ID)相关联

相当于每个线程访问这个县城局部变量,就自动为每个线程复制一份独立的副本,每个线程同过修改这个副本,

而不对其他线程访问这个局部线程变量的影响。(各自维护自己的局部线程变量副本,

就像本例中每个客户都想账户存100元,而账户初始100元,结果账户余额都是200元,说明线程只维护各自的副本)(总余额应为300元)

结果:

线程锁的机制Lock的更多相关文章

  1. Java线程锁一个简单Lock

    /** * @author * * Lock 是java.util.concurrent.locks下提供的java线程锁,作用跟synchronized类似, * 单是比它更加面向对象,两个线程执行 ...

  2. iOS 线程锁同步机制

    转载自 http://yulingtianxia.com/blog/2015/11/01/More-than-you-want-to-know-about-synchronized/ 如果你已经使用 ...

  3. 【Java并发系列04】线程锁synchronized和Lock和volatile和Condition

    img { border: solid 1px } 一.前言 多线程怎么防止竞争资源,即防止对同一资源进行并发操作,那就是使用加锁机制.这是Java并发编程中必须要理解的一个知识点.其实使用起来还是比 ...

  4. JAVA线程锁-读写锁

    JAVA线程锁,除Lock的传统锁,又有两种特殊锁,叫读写锁ReadWriteLock 其中多个读锁不互斥,读锁和写锁互斥,写锁和写锁互斥 例子: /** * java线程锁分为读写锁 ReadWri ...

  5. Linux同步机制(一) - 线程锁

    1 互斥锁 在线程实际运行过程中,我们经常需要多个线程保持同步. 这时可以用互斥锁来完成任务.互斥锁的使用过程中,主要有 pthread_mutex_init pthread_mutex_destor ...

  6. [转载] java并发编程:Lock(线程锁)

    作者:海子 原文链接: http://www.cnblogs.com/dolphin0520/p/3923167.html 出处:http://www.cnblogs.com/dolphin0520/ ...

  7. JDK5.0 特性-线程锁Lock

    来自:http://www.cnblogs.com/taven/archive/2011/12/17/2291470.html import java.util.concurrent.Executor ...

  8. 并发库应用之四 & 线程锁Lock应用

    Java5的线程并发库中,提供了相应的线程锁接口Lock来帮助我们同步处理.Lock比传统线程模型中的synchronized更加面向对象,锁本身也是一个对象,两个线程执行的代码要实现同步互斥效果,就 ...

  9. JUC——线程同步锁(锁处理机制简介)

    锁处理机制简介 juc的开发框架解决的核心问题是并发访问和数据安全操作问题,当进行并发访问的时候如果对于锁的控制不当,就会造成死锁这样的阻塞问题. 为了解决这样的缺陷,juc里面重新针对于锁的概念进行 ...

随机推荐

  1. android小技巧:在activity中实现与绑定的fragment的回调

    看到标题你可能会想是一个多么高大上的技巧呢?事实上非常一般就是自己定义回调函数. 首先我们知道activity之间的数据传递有几种方式: 一是startActivityForResut()启动一个ac ...

  2. hdu 1235 统计同成绩学生人数

    import java.util.Scanner; public class Main { public static void main(String[] args) { Scanner sc = ...

  3. MySQL 时间类型字段的分析

    日期类型                存储空间               日期格式                                           日期范围---------- ...

  4. 神经网络中的激活函数——加入一些非线性的激活函数,整个网络中就引入了非线性部分,sigmoid 和 tanh作为激活函数的话,一定要注意一定要对 input 进行归一话,但是 ReLU 并不需要输入归一化

    1 什么是激活函数? 激活函数,并不是去激活什么,而是指如何把“激活的神经元的特征”通过函数把特征保留并映射出来(保留特征,去除一些数据中是的冗余),这是神经网络能解决非线性问题关键. 目前知道的激活 ...

  5. SwiftUI 官方教程(三)

    3. 用 Stacks 组合 View 在上一节创建标题 view 后,我们来添加 text view,它用来显示地标的详细信息,比如公园的名称和所在的州. 在创建 SwiftUI view 时,我们 ...

  6. HBase学习----windows10下使用eclipse搭建HBase的开发环境

    以下是我搭建HBase开发环境的一些心得(windows10) 0.安装JDK和eclipse和一个可用的HBase. 这步是最基础的,在此就不赘述了 1.创建一个java项目: 基础问题,不赘述. ...

  7. (转载)activity外部调用startActivity的new task异常解析

    activity外部调用startActivity的new task异常解析 泡在网上的日子 / 文 发表于2013-09-07 12:45  第1314次阅读 异常,android,activity ...

  8. 4) 十分钟学会android--建立第一个APP,启动另一个Activity

    在完成上一课(建立简单的用户界面)后,我们已经拥有了显示一个activity(一个界面)的app(应用),该activity包含了一个文本字段和一个按钮.在这节课中,我们将添加一些新的代码到MyAct ...

  9. 最小环 hdu1599 poj1734

    最小环用floyd改编. hdu1599特殊一些.要求至少有三个不同的点,并且除了起点与终点重合外,中间不能有环.有点很奇怪,最大值不能为0x3f3f3f3f. poj1374就没那么讲究. //hd ...

  10. 在MyEclipse中使用debug模式

     转:http://blog.csdn.net/competerh_programing/article/details/6773371 1, 首先在一个java文件中设断点,然后运行,当程序走到断点 ...