一,简介
在JDK1.5以上版本中,提供了CopyOnWriteArrayList,CopyOnWriteArraySet两种并发容器。采用读写分离的思想(读操作在元数据中操作,写操作则在副本中操作),降低锁冲突,提高并发性。
二,实现原理
/** *读操作(没有加锁) * {@inheritDoc} * @throws IndexOutOfBoundsException {@inheritDoc} */ public E get(int index) { return (E)(getArray()[index]); } /** * Gets the array. Non-private so as to also be accessible * from CopyOnWriteArraySet class. */ final Object[] getArray() { return array;//存放元数据的数组 } /** *写操作(加锁的目的:防止并发量大时,产生过多的元数据副本,耗内存) */ public boolean add(E e) { final ReentrantLock lock = this.lock; lock.lock(); try { Object[] elements = getArray(); int len = elements.length; Object[] newElements = Arrays.copyOf(elements, len + 1);//对元数据进行拷贝 newElements[len] = e;//操作副本 setArray(newElements);//修改元数组引用为副本引用 return true; } finally { lock.unlock(); } } /** * Sets the array. */ final void setArray(Object[] a) { array = a; }
三,应用场景
对于读多写少的场景(例如:缓存),可以有效减少锁冲突,提示系统并发能力。
相关推荐
NULL 博文链接:https://pingfang.iteye.com/blog/1485535
问题:ssh-copy-id 命令无法使用,在linux服务器的ssh服务中没有有这个命令,可以在/usr/bin/的这文件夹中查看没有这个ssh-copy-id 命令。 问题分析:是由于ssh服务的问题,可以直接将ssh-copy-id 命令拷贝/usr/...
参考陈硕的多线程服务端编程>>,中的用shared_ptr实现copy-on-write技术,不过这里的线程采用的是c++11的线程库
里,我想从C++类或是设计模式的角度为各位揭开Copy-On-Write技术在string中实现的面纱,以供各位在用C++进行类库设计时做一点参考
下面小编就为大家带来一篇详谈Linux写时拷贝技术(copy-on-write)必看篇。小编觉得挺不错的,现在就分享给大家,也给大家做个参考。一起跟随小编过来看看吧
ssh-copy-id for windows,支持windows下的ssh-copy-id命令,加入exe所在路径到PATH环境变量即可
ssh-copy-id for Windows版
离线安装包,亲测可用
基于KAZE 抗平滑纹理的复制粘贴篡改检测,董晓旭,杨高波,针对部分篡改图像明显的光线变换、纹理单一提取点不足的检测效果差的问题,本文提出基于直方图均衡化预处理和KAZE特征的高效复制粘�
react-copy-to-clipboard, 复制到剪贴板响应组件 react-copy-to-clipboard 复制到剪贴板响应组件基于 copy-to-clipboard将尝试使用execCommand回退到 IE 特定的clipboardData接口,最后回退到简单的
ssh-copy-id-for-OSX, 快速macosx端口有用的unix实用程序ssh副本 id 用于OSX的 ssh-copy-id实用的unix实用工具 ssh-copy-id的快速端口注意:现在,macOS Sierra在 /usr/bin 中包括一个板载的ssh-copy-id安装git ...
NULL 博文链接:https://myeyeofjava.iteye.com/blog/1898291
php-myclabs-deep-copy-1.10.1-1.el7.remi.noarch.rpm
适用于centos 7 redhat 7 制作openssh 9.6 rpm二进制包的源码包 基于openssl 1.1.1w 内含ssh-copy-id命令 2024年1月5日制作
前端开源库-swint-copy-dirswint copy dir,为swint任务包装的目录复制函数
免密登录必备ssh-copy-id脚本
ssh-copy-id命令可以把本地主机的公钥复制到远程主机的authorized_keys文件上,ssh-copy-id命令也会给远程主机的用户主目录(home)和~/.ssh, 和~/.ssh/authorized_keys设置合适的权限。 语法格式:ssh-copy-id ...
linux锁机制的经典文档,read - copy - update。来自linux社区。
适用于centos 7 redhat 7 x86架构操作系统使用的openssh 9.5 p1 二进制rpm包 带有ssh-copy-id命令,2023年10月4日发布,当前最新版本,修复安全漏洞,更新升级openssh版本
前端开源库-copy-webpack-plugin-hash复制Webpack插件哈希,使用Webpack复制文件和目录