随笔分类 - Java并发编程
摘要:深入理解Java内存模型 【1】CPU和缓存的一致性 我们应该都知道,计算机在执行程序的时候,每条指令都是在CPU中执行的,而执行的时候,又免不了要和数据打交道。而计算机上面的数据,是存放在主存当中的,也就是计算机的物理内存啦。 刚开始,还相安无事的,但是随着CPU技术的发展,CPU的执行速
阅读全文
摘要:并发安全 【1】什么是类的线程安全? 当多个线程访问某个类时,不管运行时环境采用何种调度方式或者这些线程将如何交替执行,并且在调用代码中不需要任何额外的同步或者协同,这个类都能表现出正确的行为,那么就称这个类是线程安全的。 【2】线程不安全引发的问题 死锁 死锁是指两个或两个以上的进程在执行过程
阅读全文
摘要:自定义ThreadPoolExecutor线程池 自定义线程池需要遵循的规则 【1】线程池大小的设置 1、计算密集型: 顾名思义就是应用需要非常多的CPU计算资源,在多核CPU时代,我们要让每一个CPU核心都参与计算,将CPU的性能充分利用起来,这样才算是没有浪费服务器配置,如果在非常好的服务器配置
阅读全文
摘要:Executor框架 我们知道线程池就是线程的集合,线程池集中管理线程,以实现线程的重用,降低资源消耗,提高响应速度等。线程用于执行异步任务,单个的线程既是工作单元也是执行机制,从JDK1.5开始,为了把工作单元与执行机制分离开,Executor框架诞生了,他是一个用于统一创建与运行的接口。Ex
阅读全文
摘要:线程池 【1】为什么需要线程池?线程池的优点? 1、为什么要使用线程池? 因为创建和销毁线程都是需要时间的,特别是需要创建大量线程的时候,时间和资源的消耗是不可忽略的,而合理的使用线程池中已经创建的线程,可以减少创建和销毁线程而花费的时间和资源。 2、线程池的优点? (1)降低资源消耗:通过线程的重
阅读全文
摘要:并发容器 一、ConcurrentHashMap 【1】引入ConcurrentHashMap的目的 ConcurrentHashMap从JDK1.5开始随java.util.concurrent包一起引入JDK中,主要为了解决HashMap线程不安全和Hashtable效率不高的问题。众所周知
阅读全文
摘要:显式锁和AQS 一、显式锁 Synchronized 关键字结合对象的监视器,JVM 为我们提供了一种『内置锁』的语义,这种锁很简便,不需要我们关心加锁和释放锁的过程,我们只需要告诉虚拟机哪些代码块需要加锁即可,其他的细节会由编译器和虚拟机自己实现。 可以将我们的『内置锁』理解为是 JVM
阅读全文
摘要:原子操作(CAS) 一、CAS(Compare And Set) Compare And Set(或Compare And Swap),CAS是解决多线程并行情况下使用锁造成性能损耗的一种机制,CAS操作包含三个操作数—— 内存位置 (V)、 预期原值 (A)、 新值 (B)。如果内存位置的值与
阅读全文
摘要:线程的并发工具类 一、CountDownLatch 【1】CountDownLatch是什么? CountDownLatch,英文翻译为倒计时锁存器,是一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 闭锁可以延迟线程的进度直到其到达终止状态,闭锁可以用来确保某
阅读全文
摘要:ForkJoin分析 一、ForkJoin ForkJoin是由JDK1.7后提供多线并发处理框架。ForkJoin的框架的基本思想是分而治之。什么是分而治之?分而治之就是将一个复杂的计算,按照设定的阈值进行分解成多个计算,然后将各个计算结果进行汇总。相应的ForkJoin将复杂的计算当做一个任
阅读全文
摘要:线程间的共享 一、synchronize对象锁和类锁 synchronize为多线程关键字是一种同步锁,它可以修饰以下几种对象: 代码块: 被修饰的代码块被称为同步代码块,作用的范围是{}里面的代码,作用的对象是调用这个代码块的对象 方法: 被修饰的方法称为同步方法,作用的范围是整个方法,作用的对象
阅读全文
摘要:线程基础 一、认识java里的线程 1)java里的程序天生都是多线程的 可以看出我们只是启动了一个main方法,java虚拟机也给我们启动了6个线程,所以我们说java里的程序天生都是多线程的 二、java中启动多线程的三种方式 以下内容学习自:https://blog.csdn.net/m0_3
阅读全文

浙公网安备 33010602011771号