PV操作是EdsgerDijkstra提出的一种经典的解决同步不同执行线程的问题的方法,这种方法是基于一种叫信号量的特殊变量来实现的。简单理解为就是通过**共享变量+信号量**实现的一种同步机制,其应用与生产者消费者模型,读写问题等领域。在Java中有基于AQS实现的Semaphore信号量类。wiki对于其名字来源的解释可以做出以下对比:P(down/signal/release/pend/tr
分类:
其他好文 时间:
2018-06-02 21:33:28
阅读次数:
188
前言 熟悉 Java 并发编程的都知道,JMM(Java 内存模型) 中的 happen before(简称 hb)规则,该规则定义了 Java 多线程操作的有序性和可见性,防止了编译器重排序对程序结果的影响。 按照官方的说法: 当一个变量被多个线程读取并且至少被一个线程写入时,如果读操作和写操作没 ...
分类:
移动开发 时间:
2018-06-02 00:30:27
阅读次数:
253
JMM规范: 一.概念:规范了java虚拟机与计算机内存如何协同工作,它规定了一个线程如何和何时可以看到其他线程修改过的共享变量的值,以及在必须时如何同步地访问共享变量。 备注:如果两个线程同时调用了同一个对象的同一个方法,他们都会访问这个对象的成员变量,此时这个两个线程拥有的只是这个对象的私有拷贝 ...
分类:
编程语言 时间:
2018-05-27 16:25:40
阅读次数:
204
java_并发_volatile关键字 参考:博客园--海子 1.volatile关键字的两层语义 一旦一个共享变量(类的成员变量、类的静态成员变量)被volatile修饰之后,那么就具备了两层语义: 1)保证了不同线程对这个变量进行操作时的可见性,即一个线程修改了某个变量的值,这新值对其他线程来说 ...
分类:
编程语言 时间:
2018-05-25 19:36:34
阅读次数:
189
Volatile的特征: A、禁止指令重排(有例外) B、可见性 Volatile的内存语义: 当写一个volatile变量时,JMM会把线程对应的本地内存中的共享变量值刷新到主内存。 当读一个volatile变量时,JMM会把线程对应的本地内存置为无效,线程接下来将从主内存中读取共享变量。 Vol ...
分类:
编程语言 时间:
2018-05-23 20:44:16
阅读次数:
201
CAS虽然很高效的解决原子操作,但是CAS仍然存在三大问题。ABA问题,循环时间长开销大和只能保证一个共享变量的原子操作 1. ABA问题。因为CAS需要在操作值的时候检查下值有没有发生变化,如果没有发生变化则更新,但是如果一个值原来是A,变成了B,又变成了A,那么使用CAS进行检查时会发现它的值没 ...
分类:
其他好文 时间:
2018-05-22 12:52:06
阅读次数:
560
一、队列queue队列queue多应用在多线程场景,多线程访问共享变量。对于多线程而言,访问共享变量时,队列queue的线程安全的。因为queue使用了一个线程锁(pthread.Lock()),以及三个条件变量(pthread.condition()),来保证了线程安全。总结:队列提供了一个安全可靠的共享数据使用方案。队列内置控制安全的几个参数,非用户使用名称作用self.mutex互斥锁任何获
分类:
编程语言 时间:
2018-05-18 01:19:14
阅读次数:
224
JMM关于synchronized的两条规定: 1)线程解锁前,必须把共享变量的最新值刷新到主内存中 2)线程加锁时,将清空工作内存中共享变量的值,从而使用共享变量时需要从主内存中重新获取最新的值 (注意:加锁与解锁需要是同一把锁) 通过以上两点,可以看到synchronized能够实现可见性。同时 ...
分类:
其他好文 时间:
2018-05-17 15:25:43
阅读次数:
177
多线程程序在较低的层次上扩展了多任务的概念:一个程序同时执行多个任务,通常,每一个任务称为一个线程 多进程与多线程的区别本质上在于每个进程拥有自己的一套变量,而线程则共享数据。 共享变量使线程之间的通信比进程之间的通信更有效、更容易 1 什么是线程 1.1 使用线程给其他任务提供机会 下面是在一个单 ...
分类:
编程语言 时间:
2018-05-09 14:33:42
阅读次数:
198
什么是锁? 在单进程的系统中,当存在多个线程可以同时改变某个变量(可变共享变量)时,就需要对变量或代码块做同步,使其在修改这种变量时能够线性执行消除并发修改变量。 而同步的本质是通过锁来实现的。为了实现多个线程在一个时刻同一个代码块只能有一个线程可执行,那么需要在某个地方做个标记,这个标记必须每个线 ...
分类:
其他好文 时间:
2018-05-07 11:50:02
阅读次数:
180