![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
闻道☞
学习是最好的修行
展开
-
Java并发之AQS详解
Java并发之AQS详解:https://www.cnblogs.com/waterystone/p/4920797.html作者:水岩出处:http://www.cnblogs.com/waterystone/转载 2019-02-18 16:47:50 · 229 阅读 · 0 评论 -
Synchronized 关键字原理
一、前言Synchronized关键字解决的是多个线程之间访问资源的同步性,synchronized关键字可以保证被它修饰的方法或者代码块在任意时刻只能有一个线程执行。另外一篇博客Java:这是一份全面 & 详细的 Sychronized关键字 学习指南从多个方面介绍Synchronize的原理和使用方式等,值得大家阅读。接下来我们正式进入本篇博客的主题。学习Java的小伙...转载 2020-08-08 10:34:10 · 213 阅读 · 0 评论 -
并发编程之AQS,CountDownLatch、CyclicBarrier和Semaphore(九)
目录1.AQS(AbstractQueuedSynchronizer)抽象队列同步器2. Java并发编程:CountDownLatch、CyclicBarrier和SemaphoreCountDownLatch(计数器)-人全走了再吃饭CyclicBarrier(屏障)-人都到了在吃饭Semaphore(计数信号量)-房间里任何时候只能有指定的人数(比如5人)可以吃饭...转载 2019-11-03 11:06:35 · 375 阅读 · 0 评论 -
JDK提供的原子类原理及使用(十一)
1.为什么会有原子类CAS:Compare and Swap,即比较再交换。jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK 5之前Java语言是靠synchronized关键字保证同步的,这是一种独占锁,也是是悲观锁。2.原子更新字段原理原理:当前线程获取值,然后加一...原创 2019-11-02 12:26:48 · 400 阅读 · 0 评论 -
并发编程之锁(十)
目录1.锁信息1.锁信息存在对象的什么地方2.synchronized保证线程安全的原理2.Java中的锁分类1.公平锁/非公平锁2.可重入锁3.偏向锁/轻量级锁/重量级锁4.自旋锁5.独享锁/共享锁6.互斥锁/读写锁7.乐观锁/悲观锁8.分段锁3.锁升级和降级1.锁信息1.锁信息存在对象的什么地方任何对象都可以作为锁,那么锁信息又存...原创 2019-11-02 11:58:23 · 270 阅读 · 0 评论 -
线程间的通信(六)
程序是操作系统中的独立个体,但是个体如果不经过特殊处理就不能称为一个整体通信,线程间的通信就成为整体的必用方式之一,当线程存在通信指挥,系统间的交互性会更强大,在提高CPU利用率的同时还会使开发人员对线程任务在处理的过程中进行有效的把控与监督。wait/notify/notifyAll1.wait,释放锁,之后的代码不执行,进入阻塞(暂停)状态。2.wait的作用是使当前执行代码的线程进行等待, ...原创 2018-01-24 10:26:51 · 211 阅读 · 0 评论 -
Java线程池(八)
目录1.线程池1.什么是线程池2.线程池应用场景2.ThreadPoolExecutor类1.Java中的ThreadPoolExecutor类3.线程池原理剖析1.线程池状态2.任务的执行3.线程池中的线程初始化4.任务缓存队列及排队策略5.任务拒绝策略6.线程池的关闭7.线程池容量的动态调整8.使用示例4.Executors1.线...原创 2018-01-23 16:37:52 · 519 阅读 · 0 评论 -
java线程安全(五)
1.线程安全当多个线程访问一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。2.线程同步1、线程同步的目的是为了保护多个线程访问一个资源时对资源的破坏。2、线程同步方法是通过锁来实现,每个对象都有切仅有一个锁,这个锁与一个特定的对象关联,线程一旦获取了对象锁,其他访问该对象的线程就无法再访问该对象的其他非同步方法。3、对于静态同步方法,锁是针对...原创 2018-01-22 21:12:15 · 249 阅读 · 0 评论 -
分布式锁三种实现方式
转自:https://blog.csdn.net/xlgen157387/article/details/79036337学过Java多线程的应该都知道什么是锁,Java中的锁可以简单的理解为多线程情况下访问临界资源的一种线程同步机制。在学习或者使用Java的过程中进程会遇到各种各样的锁的概念:公平锁、非公平锁、自旋锁、可重入锁、偏向锁、轻量级锁、重量级锁、读写锁、互斥锁等。一、为什么...转载 2018-07-25 17:48:41 · 2358 阅读 · 0 评论 -
Java-阻塞队列(七)
目录线程安全的阻塞队列BlockingQueueArrayBlockingQueueLinkedBlockingQueuePriorityBlockingQueueDisruptor内存消息队列Disruptor是什么?JDK内置内存队列我们知道,Java内置了几种内存消息队列,如下所示:队列 加锁方式 是否有界 数据结构 ArrayBl...原创 2017-09-20 12:48:20 · 458 阅读 · 0 评论 -
线程通信,线程安全,volatile关键字
1.线程安全当多个线程访问一个类(对象或方法)时,这个类始终都能表现出正确的行为,那么这个类(对象或方法)就是线程安全的。 2.线程通信synchrinized:可以在任意对象及方法上加锁,而加锁的这段代码称为互斥区或临界区线程通信概念:线程是操作系统中的独立个体,但是个体如果不经过特殊处理就不能称为一个整体通信,线程间的通信就成为整体的必用方式之一,当线程存在通信指挥,系统间...原创 2017-04-12 16:22:23 · 573 阅读 · 0 评论 -
Java线程中断(四)
一,介绍JAVA中可以终止正在运行的线程的几种方式。1.线程正常退出,即run()方法执行完毕了。2.使用Thread类中的stop()方法强行终止线程。但stop()方法已经过期了,不推荐使用。3.使用中断机制,interrupted(),isInterrupted()并不能终止线程,只是对中断标识位的操作。4.异常法。结合interrupted(),isInterrupted()方法判断标识位...原创 2017-09-22 15:28:52 · 220 阅读 · 0 评论 -
Java并发编程:volatile关键字解析(三)
原文:http://www.cnblogs.com/dolphin0520/p/3920373.htmlJava并发编程:volatile关键字解析 volatile这个关键字可能很多朋友都听说过,或许也都用过。在Java 5之前,它是一个备受争议的关键字,因为在程序中使用它往往会导致出人意料的结果。在Java 5之后,volatile关键字才得以重获生机。 vo转载 2017-04-20 18:35:49 · 425 阅读 · 0 评论 -
Java wait() notify()方法使用实例讲解
原文:http://blog.csdn.net/lingzhm/article/details/44940823 1)wait()、notify()和notifyAll()方法是本地方法,并且为final方法,无法被重写。 2)调用某个对象的wait()方法能让当前线程阻塞,并且当前线程必须拥有此对象的monitor(即锁,或者叫管程) 3)调用某个对象的notify()方法能...转载 2017-05-08 21:45:54 · 494 阅读 · 0 评论 -
彻底理解ThreadLocal
http://blog.csdn.net/lufeng20/article/details/24314381/转载 2017-09-06 21:35:03 · 174 阅读 · 0 评论 -
java多线程入门(一)
1.java 进程与线程概念现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。进程是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。线程是指进程中的一个执行流程,一个进程中可以运行多个线程。线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称...转载 2016-08-08 14:43:29 · 732 阅读 · 0 评论 -
java多线程-内存模型 (一)
转载自:https://my.oschina.net/u/1859679/blog/1525343参考:深入理解Java虚拟机:JVM高级特性与最佳实践(最新第二版 文字版)Java内存模型的主要目标是定义程序中各个变量的访问规则,即在虚拟机中将变量存储到内存和从内存中取出变量这样的底层细节。1.硬件的内存模型物理机并发处理的方案对于jvm的内存模型实现,也有很大的参考作用,毕竟jvm也是在硬件层...转载 2018-01-21 20:25:30 · 207 阅读 · 0 评论 -
java线程实现与进程(二)
1.进程与线程的区别进程进程是系统进行资源分配和调度的一个独立单位。进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器赋予程序生命时,它才能成为一个活动的实体,我们称其为进程。每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。 线程线程是程序中一个单一的顺序控制流程.在单个程序中同时运行多个线程完成不同的工作,称...原创 2018-01-21 21:27:02 · 193 阅读 · 0 评论 -
Java线程创建和线程状态的转换(三)
1.线程的创建1.继承Thread(不推荐)。不推荐原因:应该将并行运行的任务与运行机制解耦,如果很多任务,要为每个任务创建一个独立的线程所付出的代价太大。start():让系统安排一个时间来调用Thread中的run()方法(随机性),也就是使线程得到运行,启动线程,具有异步执行的效果。线程的启动顺序与执行顺序无关。2.实现Runnable。Runnable接口只有一个方法 run(),我们声明...原创 2018-01-22 11:16:18 · 346 阅读 · 0 评论 -
ConcurrentHashMap原理分析(1.7与1.8)
转自:https://www.cnblogs.com/study-everyday/p/6430462.html前言以前写过介绍HashMap的文章,文中提到过HashMap在put的时候,插入的元素超过了容量(由负载因子决定)的范围就会触发扩容操作,就是rehash,这个会重新将原数组的内容重新hash到新的扩容数组中,在多线程的环境下,存在同时其他的元素也在进行put操作,如果hash...转载 2017-05-02 16:39:39 · 1576 阅读 · 1 评论