千家信息网

java读写锁的特性是什么

发表于:2024-10-22 作者:千家信息网编辑
千家信息网最后更新 2024年10月22日,本篇内容主要讲解"java读写锁的特性是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java读写锁的特性是什么"吧!1、公平选择性,支持非公平和公平
千家信息网最后更新 2024年10月22日java读写锁的特性是什么

本篇内容主要讲解"java读写锁的特性是什么",感兴趣的朋友不妨来看看。本文介绍的方法操作简单快捷,实用性强。下面就让小编来带大家学习"java读写锁的特性是什么"吧!

1、公平选择性,支持非公平和公平锁获取,吞吐量不公平优于公平。

2、重进入,读锁和写锁都支持线程重进入。

3、锁降级,遵循获取写锁、获取读锁、释放写锁的顺序,写锁可以降级为读锁。

实例

public class ReadWriteLockTest {    public static void main(String[] args) {         final Queue q = new Queue();         for (int i = 0; i < 3; i++) {             new Thread() {                @Override                public void run() {                     while (true) {                        q.get();                    }                }            }.start();             new Thread() {                @Override                public void run() {                    while (true) {                        q.put(new Random().nextInt(10000));                    }                }            }.start();        }    }} class Queue {     //共享数据,只能有一个线程能写该数据,但可以有多个线程同时读该数据。    ReadWriteLock rwl = new ReentrantReadWriteLock();    private Object data = null;//共享数据,只能有一个线程能写数据,但可以有多个线程读该数据     public void get() {        //上读锁,其他线程只能读不能写        rwl.readLock().lock();        try {             System.out.println(Thread.currentThread().getName() + " be ready to read data!");            Thread.sleep((long) (Math.random() * 1000));            System.out.println(Thread.currentThread().getName() + " have read data :" + data);        } catch (InterruptedException e) {            e.printStackTrace();        } finally {            rwl.readLock().unlock();        }    }     public void put(Object data) {        //上写锁,不允许其他线程读也不允许写        rwl.writeLock().lock();         try {            System.out.println(Thread.currentThread().getName() + " be ready to write data!");             Thread.sleep((long) (Math.random() * 1000));             this.data = data;            System.out.println(Thread.currentThread().getName() + " have write data: " + data);        } catch (InterruptedException e) {            e.printStackTrace();        } finally {            rwl.writeLock().unlock();        }    }}

到此,相信大家对"java读写锁的特性是什么"有了更深的了解,不妨来实际操作一番吧!这里是网站,更多相关内容可以进入相关频道进行查询,关注我们,继续学习!

线程 数据 特性 内容 多个 学习 支持 实用 更深 兴趣 同时 吞吐量 实例 实用性 实际 操作简单 方法 更多 朋友 网站 数据库的安全要保护哪些东西 数据库安全各自的含义是什么 生产安全数据库录入 数据库的安全性及管理 数据库安全策略包含哪些 海淀数据库安全审计系统 建立农村房屋安全信息数据库 易用的数据库客户端支持安全管理 连接数据库失败ssl安全错误 数据库的锁怎样保障安全 我的世界正版连接服务器显示共享 网络安全比赛著名战队 ctf网络安全大赛比赛时间 重建数据库索引可以分几次完成吗 河南北斗网络时钟服务器云服务器 电视连接服务器故障 网吧服务器一般能带几个客户端 离开软件开发两年 北理工 网络安全攻防演练 云服务器项目数据安全吗 网站搭建数据库连接错误 沈阳市网络安全协会成员 创建数据库实例卡住在2% 百度服务器公司 中央网络安全和信息小组成立 金卡智能软件开发加班 下列创建数据库表的说法正确的是 首届军营网络安全 第五章 数据库保护 网络安全等级保护 山西 91m2引擎数据库 达梦数据库指定日期格式查询 高青销售软件开发定制 沈阳和大连软件开发哪里好 徐州通用软件开发使用方法 吴金德网络技术有限公司 数据库怎么给sa 简历样例 数据库 云服务器多ip 数据库系统工程师优先
0