是什么 全称compare and swap,一个CPU原子指令,在硬件层面实现的机制,体现了乐观锁的思想。 JVM用C语言封装了汇编调用。Java的基础库中有很多类就是基于JNI调用C接口实现了多线程同步更新的功能。 原理 CMS有三个操作数:当前主内存变量的值V,线程本地变量预期值A,线程本地待 ...
分类:
编程语言 时间:
2018-06-22 01:06:36
阅读次数:
217
在Java虚拟机中,每个对象(object和class)通过某种逻辑关联监视器,每个监视器和一个对象引用相关联,为了实现监视器的互斥功能,每个对象都关联着一把锁。 一旦方法或者代码块被synchronized修饰,那么这个部分就放入了监视器的监视区域,确保一次只有一个线程执行该部分代码,线程必须在获 ...
分类:
编程语言 时间:
2018-06-18 23:20:50
阅读次数:
248
1 Java基础 1.1 Collection和Map 1.2 IO 1.3 异常 1.4 多线程 掌握Executors可以创建的三种(JAVA8增加了一种,共四种)线程池的特点及适用范围。 Java多线程5: 线程池Java中的线程池 掌握多线程同步机制,并熟练运用。Java多线程1: 线程生命 ...
分类:
编程语言 时间:
2018-06-18 20:24:35
阅读次数:
235
既然今天要谈的是javascript的事件循环机制,要理解事件循环,首先要知道事件循环是什么。 我们先从一个例子来看一下javascript的执行顺序。 怎么样,是不是和自己在心里运行的结果差了一万八千里呢。如果是的话,请耐心看完后面的内容,让你彻底弄明白javascript的事件循环机制。 单线程 ...
分类:
编程语言 时间:
2018-06-17 19:51:08
阅读次数:
240
linux下利用信号量同步线程实现线程访问计数功能 这里是核心代码,其他参考IPC一个综合小实践 线程同步可以使用互斥锁,也可以使用信号量。互斥锁是一个线程锁,只能锁线程不能锁进程,信号量既可以同步线程也可以同步进程。线程锁是定义在进程 之上的。 线程锁是线程库提供的一个机制,和信号量不同,信号量是 ...
分类:
编程语言 时间:
2018-06-16 11:49:56
阅读次数:
153
jit用以把程序全部或部分翻译成本地机器码,当需要装载某个类【通常是创建第一个对象时】,编译器会先找到其.class文件,然后将该类的字节码装入内存。 hotspot采用惰性评估法: 如果一段代码频繁的调用方法,或是一个循环,也就是这段代码被多次执行,JIT编译器会参与其中 而如果一个方法从来不被执 ...
分类:
其他好文 时间:
2018-06-15 19:11:45
阅读次数:
200
1、问题 1.1 产生原因 多个线程调用同一个变量的时候,因为一个时间点只有一个线程在跑,就会产生一些线程改变了这个变量,但是其它的线程却还是根据之前的变量在跑 1.2 具体问题 两个卖票的线程,票不为0时进行买票,但是当两个线程都进行买票的方法中时,一个线程已经把票卖完了,但是另一个线程的卖票程序 ...
分类:
编程语言 时间:
2018-06-12 22:35:19
阅读次数:
205
1、问题 1.1 产生的原因 系统有两个线程在跑,每个线程有两个锁,当线程一用了锁1,这个时候jvm调用线程二用了锁2,这个时候线程二不能打开锁1,程序就一直停在这里了 1.2 具体问题 有两个人Aman和Bman去执行刺杀任务,看成两个线程,老板那里只有一把匕首,要刺杀的只有一个人。Aman拿到了 ...
分类:
编程语言 时间:
2018-06-12 22:32:25
阅读次数:
152
1、原子性 (1)原子是构成物质的基本单位(当然电子等暂且不论),所以原子的意思代表着——“不可分”; (2)原子性是拒绝多线程操作的,不论是多核还是单核,具有原子性的量,同一时刻只能有一个线程来对它进行操作。简而言之,在整个操作过程中不会被线程调度器中断的操作,都可认为是原子性。例如 a=1是原子 ...
分类:
编程语言 时间:
2018-06-11 22:17:59
阅读次数:
250
多线程同步的实现方式有多种: 1、同步方法:即由synchronized修饰的同步方法 由于java的每个对象都有一个内置锁,当用此关键字修饰方法时,内置锁会保护整个方法。在调用该方法前,需要获得内置锁,否则就处于阻塞状态。 2、同步代码块:即由synchronized修饰的语句块。 被该关键字修饰 ...
分类:
编程语言 时间:
2018-06-11 00:30:58
阅读次数:
208