java lock锁住特定对象
2018-06-18 02:42:16来源:未知 阅读 ()
由于lock没有锁住特定对象的概念,该如何做到像synchronized同步块一样的效果呢?
答案:为每一个需要加锁的对像分配一把锁。
示例:
List<User> users = new ArrayList<>(); //同步某个对象 synchronized (users.get(0)) { //do something sync } //同步某个对象对应的锁 users.get(0).lock.lock(); //加锁同步 try { //do something sync }finally { users.get(0).lock.unlock(); //解锁 } class User{ /** * 给user对象分配一把锁 */ public Lock lock = new ReentrantLock(); public int id; public String name; }
效率对比(机器:macOs10.12.5,i5处理器,8G内存)
// thread_count synchronized lock
// 10 1-2ms 2-3ms
// 100 8-12ms 7-12ms
// 1000 68-94ms 64-85ms
// 10000 642-713ms 687-773ms
// 100000 5500ms 5600ms
// 1000000 54s 52s
可以看出效率几乎一样!所以,如果必须使用lock的情况下才使用它,否则还是synchronized关键字好,简单易懂。
标签:
版权申明:本站文章部分自网络,如有侵权,请联系:west999com@outlook.com
特别注意:本站所有转载文章言论不代表本站观点,本站所提供的摄影照片,插画,设计作品,如需使用,请与原作者联系,版权归原作者所有
- 国外程序员整理的Java资源大全(全部是干货) 2020-06-12
- 2020年深圳中国平安各部门Java中级面试真题合集(附答案) 2020-06-11
- 2020年java就业前景 2020-06-11
- 04.Java基础语法 2020-06-11
- Java--反射(框架设计的灵魂)案例 2020-06-11
IDC资讯: 主机资讯 注册资讯 托管资讯 vps资讯 网站建设
网站运营: 建站经验 策划盈利 搜索优化 网站推广 免费资源
网络编程: Asp.Net编程 Asp编程 Php编程 Xml编程 Access Mssql Mysql 其它
服务器技术: Web服务器 Ftp服务器 Mail服务器 Dns服务器 安全防护
软件技巧: 其它软件 Word Excel Powerpoint Ghost Vista QQ空间 QQ FlashGet 迅雷
网页制作: FrontPages Dreamweaver Javascript css photoshop fireworks Flash