1. 同步概念 2. 线程同步 3. 进程同步4. 生产者消费者模型5. 哲学家问题 ...
分类:
编程语言 时间:
2019-12-29 23:45:04
阅读次数:
116
一、synchronized介绍 线程安全问题的主要诱因 存在共享数据(也称临界资源) 存在多条线程共同操作这些数据 解决问题的根本方法: 同一时刻有且只有一个线程操作共享数据,其它线程必须等待该线程处理完数据后再对共享数据进行操作。 互斥锁的特性 互斥性: 即在同一时间只允许一个线程持有某个对象锁 ...
分类:
其他好文 时间:
2019-12-29 20:22:10
阅读次数:
58
信号量与互斥锁的异同: 1.信号量与互斥锁最根本的不同点在于:互斥锁的取值只能是0或者1,而信号量的取值范围则可以定义。 2.信号量的作用域可以进程也可以是线程,而互斥锁只能是线程。 简单来说互斥锁可以实现线程对于唯一资源的使用保护,而信号量则可以实现多线程或者进程间数量有限资源的使用保护。从某种意 ...
分类:
其他好文 时间:
2019-12-29 15:02:49
阅读次数:
59
一般来说并发通信有两种策略:共享数据(内存)和消息传递。 共享数据(内存)适用的场景: 1、速度要求高 2、一个写进程,多个读进程 3、共享内存更适合单机多核的并发编程 共享数据的问题: 1、需要解决条件竞争和线程/进程同步问题(线程锁,互斥量,信号量) 2、大量的上下文切换 基于共享内存的并发模型 ...
分类:
编程语言 时间:
2019-12-29 12:44:40
阅读次数:
77
等连接 通过两个表具有相同意义的列,建立连接条件。查询结果只显示两个列中的值是等值条件的行数据。表中同名列被选择时必须添加表名前缀进行修饰,否则无法确定这一列是属于哪个表。 按deptno的等值关系联合两张表的所有列 idle> select * from dept,emp where dept.d ...
分类:
数据库 时间:
2019-12-28 13:04:23
阅读次数:
101
本章内容: 1.死锁 2.多线程并发最佳实践(如何安全并发) 3.Spring与线程安全 4.HashMap与ConcurrentHashMap深入分析 一、死锁 1.产生必要条件 (1)互斥条件:进程要求对所分配的资源(如打印机)进?排他性控制,即在?段时间内某资源仅为?个进程所占有。此时若有其他 ...
分类:
编程语言 时间:
2019-12-27 22:08:21
阅读次数:
98
锁是java并发编程中最重要的同步机制。锁除了让临界区互斥执行外,还可以让释放锁的线程向获取同一个锁的线程发送消息。锁是解决并发冲突的重要工具。在开发中我们会用到很多类型的锁,每种锁都有其自身的特点和适用范围。需要深刻理解锁的理念和区别,才能正确、合理地使用锁。常用锁类型乐观锁与悲观锁悲观锁对并发冲突持悲观态度,先取锁后访问数据,能够较大程度确保数据安全性。而乐观锁认为数据冲突的概率比较低,可以尽
分类:
编程语言 时间:
2019-12-27 22:08:08
阅读次数:
182
原子性问题的源头是线程切换,如果能够禁用线程切换那不就能解决这个问题了吗?而操作系统做线程切换是依赖 CPU 中断的,所以禁止 CPU 发生中断就能够禁止线程切换。 在早期单核 CPU 时代,这个方案的确是可行的,而且也有很多应用案例,但是并不适合多核场景。这里我们以 32 位 CPU 上执行 lo ...
分类:
其他好文 时间:
2019-12-27 10:02:54
阅读次数:
100
死锁是这样一种情形:多个线程同时被阻塞,它们中的一个或者全部都在等待某个资源被释放。由于线程被无限期地阻塞,因此程序不可能正常终止。 java 死锁产生的四个必要条件: 1>互斥使用,即当资源被一个线程使用(占有)时,别的线程不能使用 2>不可抢占,资源请求者不能强制从资源占有者手中夺取资源,资源只 ...
分类:
编程语言 时间:
2019-12-24 20:49:12
阅读次数:
104
1、initiallyOwned表示创建mutex的线程是否拥有该互斥体。true表示创建线程拥有互斥锁,只有在创建线程中调用ReleaseMutex释放后,其他等待线程才能参与抢夺互斥体的活动。false表示互斥锁体于与空闲状态,其他等待互斥锁的线程立即参与到抢夺互斥锁的活动中去。 2、在上面程序 ...
分类:
其他好文 时间:
2019-12-24 15:19:33
阅读次数:
109