博客
关于我
强烈建议你试试无所不能的chatGPT,快点击我
关于并发
阅读量:5347 次
发布时间:2019-06-15

本文共 433 字,大约阅读时间需要 1 分钟。

今天遇到多线程并发访问数据库的问题,思来想去,只好对临界区加锁,通过synchronized关键字。

问题来了,我改对什么加锁?

根据实际情况,是想对某个临界区(也就是一段代码)加锁,但是加锁的对象是资源,而不是代码啊。所以考虑将这段代码弄成一个方法,对方法加同步锁。

可是方法也不是资源啊,对方法加锁的实质是什么呢?其实对方法加锁是对方法所属资源的加锁,如果是静态方法,那么其实是锁了他的类型,如果是普通方法,那其实是锁了类的对象。

那么,锁住某个对象,能避免并发吗?不难发现,对于非单例的对象,多线程中必定是2个不同的实例,所以锁了也没什么意义。

但是如果这个类是单例模式,那就有用了,因为每个线程获取的实例是同一个。

如果不是单例,又要达到这样的效果,那只好为类增加一个静态属性,然后锁住这个静态属性,使得不同实例见能同步

转载于:https://www.cnblogs.com/glgl2424/archive/2013/02/01/2889278.html

你可能感兴趣的文章
边框圆角方法
查看>>
asp.net WebApi自定义权限验证消息返回
查看>>
php中eval函数的危害与正确禁用方法
查看>>
20172315 2017-2018-2 《程序设计与数据结构》第十一周学习总结
查看>>
MySQL添加、修改、撤销用户数据库操作权限的一些记录
查看>>
关于谷歌浏览器Chrome正在处理请求的问题解决
查看>>
Git核心技术:在Ubuntu下部署Gitolite服务端
查看>>
平面波展开法总结
查看>>
建造者模式
查看>>
ArraySort--冒泡排序、选择排序、插入排序工具类demo
查看>>
composer 安装laravel
查看>>
8-EasyNetQ之Send & Receive
查看>>
Android反编译教程
查看>>
List<string> 去重复 并且出现次数最多的排前面
查看>>
js日志管理-log4javascript学习小结
查看>>
Android之布局androidmanifest.xml 资源清单 概述
查看>>
How to Find Research Problems
查看>>
Linux用户管理
查看>>
数据库第1,2,3范式学习
查看>>
《Linux内核设计与实现》第四章学习笔记
查看>>