多线程与并发
star时光
脚踏实地,主宰时光!
展开
-
原子性与原子操作
原子性:如果把一个事务可看作是一个程序,它要么完整的被执行,要么完全不执行。原子性达到的目标:就是能使一个程序被完整的执行。原子操作:不可被中断的一个或一系列的操作。CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不做。1.处理器如何实现原子操作: A。使用总线锁保证原子性。(缺点:原创 2017-10-12 15:27:57 · 2016 阅读 · 0 评论 -
线程发生死锁的条件与原因
产生死锁的原因主要是: (1) 因为系统资源不足。 (2) 进程运行推进的顺序不合适。 (3) 资源分配不当等。 产生死锁的四个必要条件: (1)互斥条件:一个资源每次只能被一个进程使用。 (2)请求与保持条件:一个进程因请求资源而阻塞时,对已获得的资源保持不放。 (3)不可剥夺条件:进程已获得的资源,在末使用完之前,不能强行剥夺。 (4)循环等待条件:若干进程之间原创 2017-10-12 15:29:29 · 507 阅读 · 0 评论 -
Lock和synchronized有以下几点不同:
1)Lock是一个接口,而synchronized是Java中的关键字,synchronized是内置的语言实现; 2)synchronized在发生异常时,会自动释放线程占有的锁,因此不会导致死锁现象发生;而Lock在发生异常时,如果没有主动通过unLock()去释放锁,则很可能造成死锁现象,因此使用Lock时需要在finally块中释放锁; 3)Lock可以让等待锁原创 2017-10-12 15:33:52 · 248 阅读 · 0 评论