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

网站什么时候做解析刷僵尸粉网站推广

网站什么时候做解析,刷僵尸粉网站推广,湖北专业网站建设公司,头像制作软件app目录 一、说明二、读读不互斥2.1 代码示例2.2 截图示例 三、读写互斥3.1 代码示例3.2 截图示例 四、写写互斥4.1 代码示例4.2 截图示例 五、注意事项5.2.1 代码示例5.2.2 截图示例 一、说明 1.当读操作远远高于写操作时,使用读写锁让读读可以并发,来提高…

目录

        • 一、说明
        • 二、读读不互斥
          • 2.1 代码示例
          • 2.2 截图示例
        • 三、读写互斥
          • 3.1 代码示例
          • 3.2 截图示例
        • 四、写写互斥
          • 4.1 代码示例
          • 4.2 截图示例
        • 五、注意事项
          • 5.2.1 代码示例
          • 5.2.2 截图示例

一、说明

  • 1.当读操作远远高于写操作时,使用读写锁让读读可以并发,来提高性能
  • 2.类似于数据库中的select … from … lock in share mode
  • 3.提供一个数据容器类,内部分别使用读锁保护数据的read()方法,写锁保护数据的write()方法

二、读读不互斥

2.1 代码示例
package com.learning;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.locks.ReentrantReadWriteLock;@Slf4j
public class ReadWriteLockLearning {private Object data;private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock();private ReentrantReadWriteLock.ReadLock readLock = reentrantReadWriteLock.readLock();private ReentrantReadWriteLock.WriteLock writeLock = reentrantReadWriteLock.writeLock();public Object read(){log.debug("获取读锁");readLock.lock();try {log.debug("读取");try {Thread.sleep(1000);}catch(Exception e){e.printStackTrace();}return data;}finally {log.debug("释放读锁");readLock.unlock();}}public void write(){log.debug("获取写锁");writeLock.lock();try{log.debug("写入");}finally {log.debug("释放写锁");writeLock.unlock();}}public static void main(String[] args) {ReadWriteLockLearning readWriteLockLearning = new ReadWriteLockLearning();new Thread(()->{readWriteLockLearning.read();}, "t1").start();new Thread(()->{readWriteLockLearning.read();}, "t2").start();}
}
2.2 截图示例

在这里插入图片描述

三、读写互斥

3.1 代码示例
package com.learning;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.locks.ReentrantReadWriteLock;@Slf4j
public class ReadWriteLockLearning {private Object data;private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock();private ReentrantReadWriteLock.ReadLock readLock = reentrantReadWriteLock.readLock();private ReentrantReadWriteLock.WriteLock writeLock = reentrantReadWriteLock.writeLock();public Object read(){log.debug("获取读锁");readLock.lock();try {log.debug("读取");return data;}finally {log.debug("释放读锁");readLock.unlock();}}public void write(){log.debug("获取写锁");writeLock.lock();try{log.debug("写入");try {Thread.sleep(1000);}catch(Exception e){e.printStackTrace();}}finally {log.debug("释放写锁");writeLock.unlock();}}public static void main(String[] args) {ReadWriteLockLearning readWriteLockLearning = new ReadWriteLockLearning();new Thread(()->{readWriteLockLearning.read();}, "t1").start();try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}new Thread(()->{readWriteLockLearning.write();}, "t2").start();}
}
3.2 截图示例

在这里插入图片描述

四、写写互斥

4.1 代码示例
package com.learning;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.locks.ReentrantReadWriteLock;@Slf4j
public class ReadWriteLockLearning {private Object data;private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock();private ReentrantReadWriteLock.ReadLock readLock = reentrantReadWriteLock.readLock();private ReentrantReadWriteLock.WriteLock writeLock = reentrantReadWriteLock.writeLock();public Object read(){log.debug("获取读锁");readLock.lock();try {log.debug("读取");return data;}finally {log.debug("释放读锁");readLock.unlock();}}public void write(){log.debug("获取写锁");writeLock.lock();try{log.debug("写入");try {Thread.sleep(1000);}catch(Exception e){e.printStackTrace();}}finally {log.debug("释放写锁");writeLock.unlock();}}public static void main(String[] args) {ReadWriteLockLearning readWriteLockLearning = new ReadWriteLockLearning();new Thread(()->{readWriteLockLearning.write();}, "t1").start();try {Thread.sleep(100);} catch (InterruptedException e) {e.printStackTrace();}new Thread(()->{readWriteLockLearning.write();}, "t2").start();}
}
4.2 截图示例

在这里插入图片描述

五、注意事项

  • 1.读锁不支持条件变量
  • 2.不支持重入时升级:持有读锁的情况下去获取写锁,会导致获取写锁永久等待
5.2.1 代码示例
package com.learning;import lombok.extern.slf4j.Slf4j;import java.util.concurrent.locks.ReentrantReadWriteLock;@Slf4j
public class ReadWriteLockLearning2 {private Object data;private ReentrantReadWriteLock reentrantReadWriteLock = new ReentrantReadWriteLock();private ReentrantReadWriteLock.ReadLock readLock = reentrantReadWriteLock.readLock();private ReentrantReadWriteLock.WriteLock writeLock = reentrantReadWriteLock.writeLock();public void readWrite(){log.debug("获取读锁");readLock.lock();try {try{log.debug("获取写锁");writeLock.lock();}finally {log.debug("释放写锁");writeLock.unlock();}}finally {log.debug("释放读锁");readLock.unlock();}}public static void main(String[] args) {ReadWriteLockLearning2 readWriteLockLearning = new ReadWriteLockLearning2();readWriteLockLearning.readWrite();}
}
5.2.2 截图示例

在这里插入图片描述

  • 3.支持重入时降级:持有写锁的情况下去获取读锁
http://www.hkea.cn/news/267210/

相关文章:

  • 哪些网站可以做任务网络营销推广的基本手段
  • 互联网舆情报告什么是seo营销
  • 餐饮商家做网站的好处沈阳关键词优化费用
  • 如何把网站的文字编辑网站页面优化内容包括哪些
  • 安徽做公司网站哪家好销售策略和营销策略
  • 做游戏都需要什么网站吗域名注册腾讯云
  • 北京建设厅网站谷歌关键词搜索
  • 如何识别一个网站是否做的好谷歌关键词挖掘工具
  • 网站建设专家网店营销推广
  • 做试玩网站搜索引擎优化答案
  • 外贸家具网站百度引擎搜索网址
  • 公司网站的栏目设置肇庆seo优化
  • 如何制作一个论坛网站网络服务器配置与管理
  • 北京中国建设部网站有什么平台可以推广
  • flash网站优缺点厦门百度seo
  • 贵阳利于优化的网站百度搜索引擎推广步骤
  • 金色 网站 模板外链是什么
  • 网站有多难做如何做推广引流赚钱
  • 建设企业网站怎么样百度首页 百度
  • 热烈祝贺网站上线泉州seo代理计费
  • 网站平台建设意见长沙有实力seo优化
  • 深圳网站如何制作西安seo网站推广优化
  • 网站建设业务文案网站seo检测工具
  • 石家庄做外贸网站建设现在最好的营销方式
  • 兰州做网站公司有哪些html+css网页制作成品
  • 福州做网站的公司多少钱信息流优化
  • 群晖的网站开发百度客服怎么转人工
  • 制作网站项目流程无锡网站建设seo
  • 最好的开发网站建设价格如何搜索网页关键词
  • 做网站犯法了 程序员有责任吗网站建设合同