摘要: 今天遇到多线程并发访问数据库的问题,思来想去,只好对临界区加锁,通过synchronized关键字。问题来了,我改对什么加锁?根据实际情况,是想对某个临界区(也就是一段代码)加锁,但是加锁的对象是资源,而不是代码啊。所以考虑将这段代码弄成一个方法,对方法加同步锁。可是方法也不是资源啊,对方法加锁的实质是什么呢?其实对方法加锁是对方法所属资源的加锁,如果是静态方法,那么其实是锁了他的类型,如果是普通方法,那其实是锁了类的对象。那么,锁住某个对象,能避免并发吗?不难发现,对于非单例的对象,多线程中必定是2个不同的实例,所以锁了也没什么意义。但是如果这个类是单例模式,那就有用了,因为每个线程获取的实 阅读全文
posted @ 2013-02-01 17:01 无尘24 阅读(118) 评论(0) 推荐(0) 编辑