Skip to content
体验新版
项目
组织
正在加载...
登录
切换导航
打开侧边栏
南宫梦沉
toBeTopJavaer
提交
cc7db521
T
toBeTopJavaer
项目概览
南宫梦沉
/
toBeTopJavaer
与 Fork 源项目一致
从无法访问的项目Fork
通知
1
Star
0
Fork
0
代码
文件
提交
分支
Tags
贡献者
分支图
Diff
Issue
0
列表
看板
标记
里程碑
合并请求
0
Wiki
0
Wiki
分析
仓库
DevOps
项目成员
Pages
T
toBeTopJavaer
项目概览
项目概览
详情
发布
仓库
仓库
文件
提交
分支
标签
贡献者
分支图
比较
Issue
0
Issue
0
列表
看板
标记
里程碑
合并请求
0
合并请求
0
Pages
分析
分析
仓库分析
DevOps
Wiki
0
Wiki
成员
成员
收起侧边栏
关闭侧边栏
动态
分支图
创建新Issue
提交
Issue看板
体验新版 GitCode,发现更多精彩内容 >>
未验证
提交
cc7db521
编写于
11月 28, 2020
作者:
H
Hollis
提交者:
GitHub
11月 28, 2020
浏览文件
操作
浏览文件
下载
电子邮件补丁
差异文件
Update synchronizedlist-vector.md
上级
6e33a3f7
变更
1
隐藏空白更改
内联
并排
Showing
1 changed file
with
9 addition
and
1 deletion
+9
-1
docs/basics/java-basic/synchronizedlist-vector.md
docs/basics/java-basic/synchronizedlist-vector.md
+9
-1
未找到文件。
docs/basics/java-basic/synchronizedlist-vector.md
浏览文件 @
cc7db521
...
...
@@ -128,6 +128,14 @@ ArrayList类的remove方法内容如下:
> 从内部实现机制来讲ArrayList和Vector都是使用数组(Array)来控制集合中的对象。当你向这两种类型中增加元素的时候,如果元素的数目超出了内部数组目前的长度它们都需要扩展内部数组的长度,Vector缺省情况下自动增长原来一倍的数组长度,ArrayList是原来的50%,所以最后你获得的这个集合所占的空间总是比你实际需要的要大。所以如果你要在集合中保存大量的数据那么使用Vector有一些优势,因为你可以通过设置集合的初始化大小来避免不必要的资源开销。
**同步代码块和同步方法的区别**
1.
同步代码块在锁定的范围上可能比同步方法要小,一般来说锁的范围大小和性能是成反比的。
2.
同步块可以更加精确的控制锁的作用域(锁的作用域就是从锁被获取到其被释放的时间),同步方法的锁的作用域就是整个方法。
3.
同步代码块可以选择对哪个对象加锁,但是静态方法只能给this对象加锁。
**同步代码块和同步方法的区别**
1.同步代码块在锁定的范围上可能比同步方法要小,一般来说锁的范围大小和性能是成反比的。 2.同步块可以更加精确的控制锁的作用域(锁的作用域就是从锁被获取到其被释放的时间),同步方法的锁的作用域就是整个方法。 3.静态代码块可以选择对哪个对象加锁,但是静态方法只能给this对象加锁。
> 因为SynchronizedList只是使用同步代码块包裹了ArrayList的方法,而ArrayList和Vector中同名方法的方法体内容并无太大差异,所以在锁定范围和锁的作用域上两者并无却别。 在锁定的对象区别上,SynchronizedList的同步代码块锁定的是mutex对象,Vector锁定的是this对象。那么mutex对象又是什么呢? 其实SynchronizedList有一个构造函数可以传入一个Object,如果在调用的时候显示的传入一个对象,那么锁定的就是用户传入的对象。如果没有指定,那么锁定的也是this对象。
...
...
@@ -140,4 +148,4 @@ ArrayList类的remove方法内容如下:
之前的比较都是基于我们将ArrayList转成SynchronizedList。那么如果我们想把LinkedList变成线程安全的,或者说我想要方便在中间插入和删除的同步的链表,那么我可以将已有的LinkedList直接转成 SynchronizedList,而不用改变他的底层数据结构。而这一点是Vector无法做到的,因为他的底层结构就是使用数组实现的,这个是无法更改的。
所以,最后,SynchronizedList和Vector最主要的区别:
**1\.SynchronizedList有很好的扩展和兼容功能。他可以将所有的List的子类转成线程安全的类。**
**2\.使用SynchronizedList的时候,进行遍历时要手动进行同步处理**
。
**3\.SynchronizedList可以指定锁定的对象。**
\ No newline at end of file
所以,最后,SynchronizedList和Vector最主要的区别:
**1\.SynchronizedList有很好的扩展和兼容功能。他可以将所有的List的子类转成线程安全的类。**
**2\.使用SynchronizedList的时候,进行遍历时要手动进行同步处理**
。
**3\.SynchronizedList可以指定锁定的对象。**
编辑
预览
Markdown
is supported
0%
请重试
或
添加新附件
.
添加附件
取消
You are about to add
0
people
to the discussion. Proceed with caution.
先完成此消息的编辑!
取消
想要评论请
注册
或
登录