同步 怎么理解这两个的区别呀

qi604388041 2010-08-25 11:06:10
synchronized
------------------
public ForumThreadState getState() {
return state;
}
public synchronized void setState(ForumThreadState forumThreadState) {
this.state = forumThreadState;
}

**********************************
ReentrantReadWriteLock
-------------------------
public ForumThreadState getState() {
read.lock();
try {
return state;
} finally {
read.unlock();
}
}
public void setState(ForumThreadState forumThreadState) {
write.lock();
try {
this.state = forumThreadState;
} finally {
write.unlock();
}

}




在网上找好多资料 都说 ReentrantReadWriteLock 的性能比 synchronized 高?
我看不出如果是这样都一样的 我用synchronized 只锁住set方法 读取的时候 用get没有任何锁
并不影响读取
望高手 帮忙解释下
...全文
63 3 打赏 收藏 转发到动态 举报
写回复
用AI写文章
3 条回复
切换为时间正序
请发表友善的回复…
发表回复
chengjing123456 2010-08-25
  • 打赏
  • 举报
回复
synchronized 是如果当前对象被访问其他方法将不可访问改对象,必须等到起释放对象后才可以访问。。。如果单个用户的话并不好做测试。。。
ztenv 2010-08-25
  • 打赏
  • 举报
回复
都说 ReentrantReadWriteLock 的性能比 synchronized 高?

是正确的,因为synchronized进行了封装,但代码看起来更简洁,也不容易出错,离开作用域就释放了,而不像Lock,出错了需要自己释放锁;
qi604388041 2010-08-25
  • 打赏
  • 举报
回复
那上面两个 在性能方面有什么区别 ??
ReentrantReadWriteLock 优于 synchronized
我可看不错来 所以想问下

public ForumThreadState getState() {
return state;
}
public synchronized void setState(ForumThreadState forumThreadState) {
this.state = forumThreadState;
}
*********************************
***********************
public ForumThreadState getState() {
read.lock();
try {
return state;
} finally {
read.unlock();
}
}
public void setState(ForumThreadState forumThreadState) {
write.lock();
try {
this.state = forumThreadState;
} finally {
write.unlock();
}

}


这两个自己的性能 读取的性能的差距

67,513

社区成员

发帖
与我相关
我的任务
社区描述
J2EE只是Java企业应用。我们需要一个跨J2SE/WEB/EJB的微容器,保护我们的业务核心组件(中间件),以延续它的生命力,而不是依赖J2SE/J2EE版本。
社区管理员
  • Java EE
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧