并发、多线程
葵歌小妖
这个作者很懒,什么都没留下…
展开
-
了解SQL Server锁争用:NOLOCK 和 ROWLOCK 的使用
最近一年老是受到MSSQLSERVER数据库阻塞的困扰,单表记录已突破400万条,除了分库似乎没有别的方法,使用分区存储,数据库又要重新设计,考虑到程序中使用较多的就是查询,而查询会受到更新与删除的影响,更新与删除引发的页面锁不光锁定正在修改的记录,还会有很多其它记录也会被锁定,会导致查询的阻塞,要加快一些查询的速度,我们可以使用nolock和rowlock,今天对一些查询作了一些修改,运行一段时转载 2014-04-06 19:21:35 · 2267 阅读 · 17 评论 -
并发操作与数据的不一致性
最近做的《选修课系统》需要考虑这样一个问题:数据库的并发操作带来的数据库数据不一致问题——因为是全校性选修课,同一时间点大批学生选课,那么必然存在多名学生同时对同一数据进行操作是的问题,如果这种并发操作不加以控制的话,必会造成数据的不一致。 一直知道有这种问题,并且知道这种问题的解决方法——加锁;但是有些东西之前了解的并不是很透彻,于是好好研究了一天,觉得理解的还可以,先总结一部分。原创 2014-03-21 19:50:55 · 14110 阅读 · 29 评论 -
并发控制的主要技术——封锁
上篇博客通过一些实例介绍了并发导致的数据不一致一系列问题——丢失修改、读脏数据、不可重复读《并发操作与数据的不一致性》 本篇博客介绍如何进行并发控制。——封锁。 1,封锁(1)封锁就是事务T在对某数据对象(例如:表、记录)操作之前,先向系统发出请求,对其加锁(2)加锁后事务T就对数据对象有了一定的控制,在事务T释放它的锁之前,其他的事务不能更新此数据对象原创 2014-03-27 11:32:35 · 11277 阅读 · 45 评论 -
多线程访问共享数据(1)
多线程访问共享数据解决方案:一,什么是多线程 线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称为多线程. 所有的线程虽然在微观上是串行执行的,但是在宏观上你完全可以认为它们在并行执行二,多线程访问共享数据解决方案1,如果每个线程执行的代码相同,可以使用同一个Runnable对象,这个Runnable对象中有那个共享数据。例如:卖原创 2015-07-31 08:24:50 · 4395 阅读 · 7 评论 -
多线程访问共享数据(2)
上篇博客介绍了不同情况下,多线程访问共享数据的不种解决。本篇博客接着介绍第二种情况(每个线程执行的代码不同)的其他解决方案。 如果每个线程执行的代码不同,这个时候需要用不同的Runnable对象,有如下三种方式来实现这些Runnable对象之间的数据共享: 将共享数据封装在另外一个对象中,然后将这个对象逐一传递给各个Runnable对象。每个线程对共享数据的操作方法也分配到那个原创 2015-07-31 08:34:42 · 2606 阅读 · 5 评论 -
Lock&Condition实现线程同步通信
一,Lock Lock比传统的线程模型中的synchronized方式更加面向对象,因为“锁”本身就是一个对象。两个线程执行的代码要实现同步互斥的效果,他们必须用同一个Lock对象。 读写锁:(1)读锁:多个读锁不互斥,读锁与写锁互斥,这是由jvm自己控制的,我们只需要代码中用对相应的锁即可。如果只读数据,那么可以很多人(线程)同时读,但是不能同时写,此时就加读锁。如果代原创 2015-07-31 15:45:21 · 2526 阅读 · 5 评论