A股上市公司传智教育(股票代码 003032)旗下技术交流社区北京昌平校区

 找回密码
 加入黑马

QQ登录

只需一步,快速开始

© 裙下之臣 中级黑马   /  2014-9-6 23:24  /  617 人查看  /  1 人回复  /   0 人收藏 转载请遵从CC协议 禁止商业使用本文

java线程安全的处理我知道的现在就2种
lock、synchronized
我想线程安全封装在我框架的底层。但是在开发中我始终有个疑问:
1.数据会出出现完整性问题(多线程并发的时候 你一个逻辑线程需要set 10属性,但才3个,另外一个逻辑线程要取这个对象,那个瞬间他取过去的数据实际上就只改了3个属性)
2.如果我set了 但是update失败!但是内存中的数据任然有部分已经受到了影响

好了!synchronized不能很好的解决我的问题,那么我就来用Lock。Lock必须显示的加锁和放锁

我要防止上面的问题,在比如getById()的时候就有了2中加锁方式,加读锁和写锁。我需要修改的查询就在调用getById中加上写锁,只读不修改的时候就加读锁。而现在问题又来了
并且我是加在User的实例对象上的,加载Dao也可以但性能会底很多!
1.我加了写锁之后必须等我逻辑线程处理完后 简单的说就是要 update之后才能放锁!

2.如果逻辑线程在取得写锁后逻辑出现异常了!导致没有换锁!
我想问下你们一般线程安全是怎么处理的呢!还有除了我说的3种,还有什么好的处理方式呢!

1 个回复

倒序浏览
有木有大神啊    求解决啊!!!
回复 使用道具 举报
您需要登录后才可以回帖 登录 | 加入黑马