当前位置: 首页 > wzjs >正文

学生管理系统网站连接交换

学生管理系统网站,连接交换,东莞网站建设价格,专业做网站的公司有ReentrantLock ReentrantLock与Synchronized工作原理Condition ReentrantLock与Synchronized ReentrantLock是一种可重入的独占锁,相对于synchronized,ReentrantLock具备如下特点: 可中断可以设置超时时间可以设置为公平锁支持多个条件变量…

ReentrantLock

  • ReentrantLock与Synchronized
  • 工作原理
  • Condition

ReentrantLock与Synchronized

ReentrantLock是一种可重入的独占锁,相对于synchronized,ReentrantLock具备如下特点:

  1. 可中断
  2. 可以设置超时时间
  3. 可以设置为公平锁
  4. 支持多个条件变量
  5. 与synchronized一样,都支持可重入

在使用时要注意4个问题:

  1. 默认情况下ReentrantLock为非公平锁而非公平锁;
  2. 加锁次数和释放锁次数一定要保持一致,否则会导致线程阻塞或程序异常;
  3. 加锁操作一定要放在try代码之前,这样可以避免未加锁成功又释放锁的异常;
  4. 释放锁一定要放在finally中,否则会导致线程阻塞。

工作原理

当有线程调用lock方法的时候:如果线程获取到锁了,那么就会通过CAS的方式把AQS内部的state设置成为1。这个时候,当前线程就获取到锁了。只有首部的节点(head节点封装的线程)可以获取到锁。其他线程都会加入到这一个阻塞队列当中。如果是公平锁的话,当head节点释放锁之后,会优先唤醒head.next这一个节点对应的线程。如果是非公平锁,
允许新来的线程和head之后唤醒的线程通过cas竞争锁。

Condition

相当于synchronized中的wait()和notify()机制,通常与Lock接口(比如ReentrantLock)一起使用。调用Condition的await()和signal()方法,都必须在lock保护之内。

public class Main {private final ReentrantLock lock = new ReentrantLock();private final Condition condition = lock.newCondition();public static volatile boolean flag = false;private void lockCondition() throws InterruptedException {new Thread(new Runnable() {@Overridepublic void run() {lock.lock();try {System.out.println("t1线程抢到锁");while (!flag) {System.out.println("t1线程等待");condition.await();}} catch (InterruptedException e) {throw new RuntimeException(e);} finally {lock.unlock();System.out.println("t1线程释放锁");}System.out.println("线程t1执行完成");}}, "t1").start();Thread.sleep(3000);new Thread(new Runnable() {@Overridepublic void run() {lock.lock();try {System.out.println("t2线程抢到锁");flag = true;condition.signal();} finally {lock.unlock();System.out.println("t2线程释放锁");}System.out.println("t2线程执行完成");}}, "t2").start();}public static void main(String[] args) throws InterruptedException {new Main().lockCondition();}
}
http://www.dtcms.com/wzjs/159340.html

相关文章:

  • 投资者关系互动平台百度网站优化方案
  • 动态网站的发展趋势百度百科推广费用
  • 做app要不要建网站最新舆情信息网
  • 专做畜牧招聘网站的网站运营策划书范文
  • 图片无版权网站厦门网站流量优化价格
  • 网站营销站点有你想seo案例分享
  • 如何推广个人网站深圳seo优化公司排名
  • flash网站设计教程网络营销服务企业有哪些
  • 朋友给我做网站深圳网络营销推广渠道
  • 东莞专业微网站建设镇江关键字优化公司
  • javaweb网站首页怎么做南宁关键词优化软件
  • 深圳石岩做网站的公司济南计算机培训机构哪个最好
  • 做交友网站年收入模板网站建设开发
  • 济南做外贸的网站公司自有品牌如何推广
  • 做音乐头像网站宁波正规站内优化seo
  • 知识付费商城源码深圳专业seo
  • 网站框架图成都调查事务所
  • 管理网站开发教程管理人员课程培训
  • 日照建网站公司专业培训大全
  • wikidot怎么建设网站怎么创建个人网站
  • 台州制作网站软件石家庄谷歌seo
  • android开发环境有哪些技术教程优化搜索引擎整站
  • 做网站较好的公司商业网站设计
  • 怎么看网站是哪里做的网络营销过程步骤
  • 创意视差wordpress主题怎样做seo搜索引擎优化
  • 云南省网站建设2024年最新一轮阳性症状
  • 做搜狗网站点击赚钱怎么设计网站
  • 深圳网站建设怎样网络推广网站公司
  • 番禺网站制作 优帮云google play三件套
  • 新闻类网站怎么做百度推广电商如何推广自己的产品