![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
Visonws
这个作者很懒,什么都没留下…
展开
-
并发编程之线程基础---01
文章目录1.线程状态2.通过命令显示线程状态3.线程启动和停止3.1 启动3.2 停止4.线程安全问题4.1 计算机底层线程原理4.2 计算机底层缓存一致性问题4.3 Java中的线程安全问题4.3.1内存模型JMM1.线程状态 线程一共有 6 种状态(NEW、RUNNABLE、BLOCKED、WAITING、TIME_WAITING、TERMINATED)NEW:初始状态,线程被构...原创 2019-01-13 10:43:39 · 162 阅读 · 0 评论 -
并发编程之JMM解决线程安全问题及volatile关键字--02
文章目录1. JMM解决原子性、可见性、有序性的问题1.1 原子性保障1.2 可见性1.3 有序性2. volatile如何保证可见性3. volatile防止指令重排序3.1 内存屏障4. Volatile原子性问题5.volatile使用条件6.volatile应用场景1. JMM解决原子性、可见性、有序性的问题 在Java中提供了一系列和并发处理相关的关键字,比如volatile、Sy...原创 2019-01-13 13:50:44 · 495 阅读 · 1 评论 -
并发编程之synchronized关键字原理--03
文章目录1.synchronized应用方式2.synchronized字节码指令3.synchronized的锁的原理3.1 Java对象头3.2 Mark Word3.3 Monitor3.4 synchronized的锁升级和获取过程1)自旋锁(CAS)2)偏向锁3)轻量级锁4)重量级锁5)锁对比4.wait和notify4.1 原理:4.2 wait和notify放在synchronize...原创 2019-01-13 19:00:15 · 154 阅读 · 0 评论 -
并发编程之Lock,LockSupport,重入锁,读写锁 -- 07
文章目录1. ReentrantLock2. ReentrantReadWriteLock3. ReentrantLock原理 我们知道,锁是用来控制多个线程访问共享资源的方式,一般来说,一个锁能够防止多个线程同时访问共享资源,在Lock接口出现之前,Java应用程序只能依靠synchronized关键字来实现同步锁的功能,在java5以后,增加了JUC的并发包且提供了Lock接口用来实现锁的...原创 2019-01-19 11:41:29 · 818 阅读 · 0 评论 -
并发编程之Condition -- 08
任意一个Java对象,都拥有一组监视器方法(定义在java.lang.Object上),主要包括wait()、notify()以及notifyAll()方法,这些方法与synchronized同步关键字配合,可以实现等待/通知模式JUC包提供了Condition来对锁进行精准控制,Condition提供了类似Object的监视器方法,和Lock配合可以实现等待和通知模式,让某些线程一起等待某个...原创 2019-01-19 12:28:47 · 217 阅读 · 0 评论 -
并发编程之 根据CPU核心数确定线程池并发线程数
原文见 https://blog.csdn.net/FAw67J7/article/details/79885842 目录一、抛出问题二.分析三、实际应用四、总结: 正文回到顶部一、抛出问题关于如何计算并发线程数,一般分两派,来自两本书,且都是好书,到底哪个是对的?问题追踪后,整理如下:第...转载 2019-01-19 21:56:01 · 522 阅读 · 0 评论 -
并发编程之CAS--04
1.CAS锁机制-乐观锁 在jdk5以前,java基本只有靠synchronized关键字来保证同步,这会导致需要同步的对象被加上独占锁,也就是我们常说的悲观锁。悲观锁存在一些问题,典型的如:1.在多线程竞争下,加锁和释放锁会导致比较多的上下文切换和调度延时,引起性能问题。2.一个线程持有锁会导致其他所有需要此锁的线程挂起 与悲观锁对应的是乐观锁,乐观锁在处理某些场景的时候有...原创 2019-01-14 23:42:31 · 213 阅读 · 0 评论 -
并发编程之同步器AQS--05
文章目录1.功能分类2.内部实现3.AQS使用方法3.1 继承3.2 修改同步状态的方法3.3 同步器可以重写的方法3.4 调用AQS提供的方法3.5 设计思想 AQS(AbstractQueuedSynchronizer),AbstractQueuedSynchronizer提供了一个FIFO队列,可以看做是一个用来实现锁以及其他需要同步功能的框架。这里简称该类为AQS。AQS的使用依靠继承...原创 2019-01-15 21:45:19 · 355 阅读 · 0 评论 -
Java的并发容器和框架ConcurrentHashMap,ConcurrentLinkedQueue ,阻塞队列
目录1.线程安全的容器 -- ConcurrentHashMap2.非阻塞算法的线程安全的队列 -- ConcurrentLinkedQueue 3.Java中的阻塞队列 3.1.概念 3.2.这两个附加操作提供的处理方式方法 3.3 Java里的阻塞队列1.线程安全的容器 -- ConcurrentHashMap ...原创 2018-08-09 08:04:08 · 474 阅读 · 0 评论 -
ReentrantLock锁和Synchronized锁的异同点
参考:https://blog.csdn.net/chenchaofuck1/article/details/51045134相同点: 这两种同步方式有很多相似之处, 1.它们都是加锁方式同步; 2.都是重入锁; 3. 阻塞式的同步;也就是说当如果一个线程获得了对象锁,进入了同步块,其他访问...原创 2018-08-02 23:45:54 · 1843 阅读 · 0 评论 -
Java中的原子操作类JUC-atomic
目录一、Java中原子操作类1.原子更新基本类型2.原子更新数组3.原子更新引用类型4.原子更新字段类二、原子操作类原理一、Java中原子操作类简介: 当更新一个变量的时候,多出现数据争用的时候可能出现所意想不到的情况。这时的一般策略是使用synchronized解决,因为synchronized能够保证多个线程不会同时更新该变量。然而,从jdk 5之后...原创 2018-08-09 22:39:56 · 209 阅读 · 0 评论 -
Java并发工具类CountDownLatch CyclicBarrier Semaphore,Exchanger,fork/join
目录1.CountDownLatch1.1 使用场景1.2 案例1.3 原理1.3.1 await方法1.3.2 countdown方法2.CyclicBarrier2.1 CyclicBarrier和CountDownLatch的区别3.Semaphore3.1 使用场景3.2 案例3.3原理4.Exchanger5.fork/join...原创 2018-08-11 09:09:12 · 497 阅读 · 0 评论 -
Java中的线程池实现类ThreadPoolExecutor
目录1.线程池的优点: 2.线程池的实现原理:2.1 ThreadPoolExecutor执行示意图3.线程池的使用4.向线程池提交任务5.关闭线程池6.线程池提供方法可以重写7.监控线程池,自定义线程池 1.线程池的优点: 线程是稀缺资源,使用线程池可以减少创建和销毁线程的次数,每个工作线程都可以重复使用。 可以根据系统的承受能力,调整线...原创 2018-08-11 15:19:22 · 484 阅读 · 0 评论 -
Executor框架
1.Executor框架主要由3大部分组成: 任务。包括被执行任务需要实现的接口:Runnable接口或者Callable接口 任务的执行。包括执行机制的核心接口Executor,以及继承Executor的ExecutorService接口。Executor框架有两个关键类,ThreadPoolExecutor和ScheduledThreadPoolExecutor。 异步计算的结果。包...原创 2018-08-11 21:49:40 · 921 阅读 · 0 评论 -
并发编程之JUC包--06
文章目录1.Java具有原子性,可见性和有序性的线程通信2.concurrent包的实现 现在CPU内部已经执行原子的CAS操作,CAS通过调用JNI的代码实现的。JNI:Java Native Interface为JAVA本地调用,允许java调用其他语言。而compareAndSwapInt就是借助C++语言来调用CPU底层指令实现原子操作的。1.Java具有原子性,可见性和有序性的线...原创 2019-01-15 22:09:34 · 491 阅读 · 0 评论