- 博客(9)
- 资源 (6)
- 收藏
- 关注
原创 LockSupport分析
前几篇分析过wait和notify方法,这两个方法是用来在两个线程之间进行通信的(生产者消费者模型的基本实现)。a.wait()-> b.execute()->b.notify()->a.execute()。我们要知道,在实现两个线程之间能够切换运行时,wait和notify方法其实是运用了一个中间变量,就是Object对象来实现的。今天我们要学习的LockSupport则不是这...
2018-04-26 15:45:09 406
原创 interrupt()和interrupted()以及isInterrupted()
这一篇着重分析下线程中断,在C.U.T中,中断是用的比较多的一种技术手段,运用的好能带来很多的便利。1.interrupt() public void interrupt() { if (this != Thread.currentThread()) checkAccess(); synchronized (blockerLock) ...
2018-04-17 15:00:28 973
原创 sleep()和yield()以及join()
yield()方法意味着“让步”。1.让步的意思线程告诉cpu,你可以去执行其他的线程,我可以让出当前cpu的执行权利。2.它的作用就是将当前线程从执行状态转变到可执行状态。3.但是它不能保证其他线程一定能够执行,因为执行过yield的线程当前依然是可执行的状态,有可能被cpu再次执行。4.但是执行yield的线程不会释放锁,这是要注意的。例子1public class Test { p...
2018-04-13 21:46:01 1047
原创 线程wait和notify深入学习和分析
我们都知道简单的生产者和消费者的实现就是通过Object内的wait和notify实现的。至于例子暂时不写了。一、前言常见面试题:为什么wait和notify方法是Object类中的方法,而不是在Thread里,毕竟通常我们都是在多线程的时候在使用wait和notify方法。解释:1.首先我们知道生产者和消费者模型里,我们使用的是一个Object lock = new Object()。然后在新起...
2018-04-13 10:12:22 2143
原创 Java-线程知识总结
1. 基本解释:进程:进程是系统进行资源分配和调度的一个基本单位。线程:是CPU调度和分派的基本单位。联系:线程之间会互相影响,同一个进程中的多个线程之间可以并发执行。进程的概念更大,线程的概念更接近执行体的概念,它可以与同进程中的的其他线程共享数据,但拥有自己的独立的空间。区别:1.1一个程序至少一个进程,一个进程至少一个线程。1.2进程在执行过程中拥有独立的内存单元,而多个线程共享内存。1.3...
2018-04-11 17:16:57 245
原创 Java---并发知识合集大纲
这一篇作为一篇标签,记录下线程中一些常见的知识点,以及互相之间的分析和总结,希望通过这些知识来提高一下自己。一、线程基础1.同步原语synchronizevolatilevolatile2CAS操作2.Java内存模型JVM解释(繁琐)JVM解释2(简单)final域3.Thread线程间的状态切换wait和notify方法分析sleep/yield/join()分析interruptThread...
2018-04-10 17:03:58 267
原创 锁的消除和粗化
锁的消除出现的时机:虚拟机即时编译期运行时。出现的原因:主要判断依据就是来源于逃逸分析的数据支持,如果判断在一段代码中,堆上的所有数据都不会逃逸出去从而被其他线程访问到,那就可以把它们当做栈上的数据对待,认为它们是线程私有,同步锁无须进行。出现的典型例子:本身对于String的连接操作JVM会转化成StringBudiler进行连接,既然转化成了sb,那么其实sb是一个局部变量,对于append操...
2018-04-10 16:56:28 1903
原创 Java--偏向锁/轻量级锁/重量级锁
首先要解释清楚这几种锁的特征和区别,以及运行时候的变化,需要了解Java对象头的一些知识,在Java对象头的Mark Word内就记录着这些不同锁的状态位。另外偏向锁---轻量级锁---重量级锁本文都需要依托synchronize进行理解和分析。另外也要参照网络上很多的资料。1.对象头:关于对象头的具体记录,可以参考这边:对象头2.同步的原理:关于JVM规范对于同步的解释,可以参考这边:monit...
2018-04-10 14:34:01 1401
原创 分布式锁的3种实现方式
说起分布式的概念,首当其冲就是CAP理论,即满足一致性(Consistency)、可用性(Availability)和分区容错性(Partition tolerance)。但是CAP理论告诉我们,任何系统只能满足其中两个,所以都要求去做取舍。那么人们常说的一般都是,需要牺牲一致性来保证系统的高可用性,只要保证系统的最终一致性,并且允许的时间差值能够被接受就行。对于这个,本人的体会就是订单系统,对于...
2018-04-04 15:20:58 8874 1
redis设计与实现
2017-11-08
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人