Java并发编程
文章平均质量分 92
hresh
这个作者很懒,什么都没留下…
展开
-
Java并发编程学习系列九:主流锁
Java锁学习Java提供了种类丰富的锁,每种锁因其特性的不同,在适当的场景下能够展现出非常高的效率。本文旨在对锁相关源码(本文中的源码来自JDK 8和Netty 3.10.6)、使用场景进行举例,为读者介绍主流锁的知识点,以及不同的锁的适用场景。Java中往往是按照是否含有某一特性来定义锁,我们通过特性将锁进行分组归类,再使用对比的方式进行介绍,帮助大家更快捷的理解相关知识。下面给出本文内容的总体分类目录:乐观锁 VS 悲观锁乐观锁与悲观锁是一种广义上的概念,体现了看待线程同步的不同角度。在Ja原创 2020-08-01 22:28:06 · 200 阅读 · 0 评论 -
Java并发编程学习系列八:单例模式
介绍什么是单例模式?通俗的讲,就是在应用程序中只需要某个类保留唯一一个实例对象,不希望有更多的实例。单例模式是 Java 设计模式中最简单的设计模式之一,在应用程序中经常被用到。应用场景单例模式的应用场景有很多,比如线程池、日志对象、缓存、数据库连接池、计算机系统设备管理器等等。这些常常都设计成全局唯一的,方便集中管理,也节省系统的开销。实现方式实现单例模式要注意以下三点:1、单例类只能有一个实例,不能从其他对象中 new 出来, 即构造器用 private 修饰。2、单例类必须自己创建自己原创 2020-07-12 19:14:21 · 302 阅读 · 0 评论 -
Java并发编程学习系列五:函数式接口、Stream流等
四大函数接口什么是函数式接口?有且只有一个抽象方法的接口被称为函数式接口,函数式接口适用于函数式编程的场景,Lambda 就是 Java 中函数式编程的体现,可以使用Lambda表达式创建一个函数式接口的对象,一定要确保接口中有且只有一个抽象方法,这样Lambda才能顺利的进行推导。函数式接口里除了抽象方法之外,还允许包含默认方法和静态方法。@FunctionalInterface注解与@Override 注解的作用类似,Java 8中专门为函数式接口引入了一个新的注解:@FunctionalIn原创 2020-07-05 21:41:37 · 311 阅读 · 0 评论 -
Java并发编程学习系列四:线程池
概念为什么要使用多线程呢?先从总体上来说:从计算机底层来说:线程可以比作是轻量级的进程,是程序执行的最小单位,线程间的切换和调度的成本远远小于进程。另外,多核 CPU 时代意味着多个线程可以同时运行,这减少了线程上下文切换的开销。从当代互联网发展趋势来说:现在的系统动不动就要求百万级甚至千万级的并发量,而多线程并发编程正是开发高并发系统的基础,利用好多线程机制可以大大提高系统整体的并发能力以及性能。再深入到计算机底层来探讨:单核时代: 在单核时代多线程主要是为了提高 CPU 和 IO 设备原创 2020-07-05 21:27:14 · 381 阅读 · 0 评论 -
Java并发编程学习系列三:辅助类与阻塞队列
辅助类CountDownLatch减法计数器,位于 java.util.concurrent 包下,我们看一下关于它的定义。主要方法有:首先我们看一个简单的案例:public class CountDownLatchDemo { public static void main(String[] args) throws InterruptedException { CountDownLatch countDownLatch = new CountDownLatch(6原创 2020-07-05 21:24:31 · 239 阅读 · 0 评论 -
Java并发编程学习系列二:集合不安全
概念Java集合类框架的基本接口有哪些?总共有两大接口:Collection 和 Map ,一个元素集合,一个是键值对集合; 其中 List 和 Set 接口继承了 Collection 接口,一个是有序元素集合,一个是无序元素集合; 而 ArrayList 和 LinkedList 实现了 List 接口,HashSet 实现了 Set 接口,这几个都比较常用; HashMap 和 HashTable 实现了 Map 接口,并且 HashTable 是线程安全的,但是 HashMap 性能更好;C原创 2020-07-05 21:17:35 · 226 阅读 · 0 评论 -
Java并发编程学习系列一:线程与锁
概念什么是线程和进程?进程是程序的一次执行过程,是系统运行程序的基本单位,因此进程是动态的。系统运行一个程序即是一个进程从创建,运行到消亡的过程。在 Java 中,当我们启动 main 函数时其实就是启动了一个 JVM 的进程,而 main 函数所在的线程就是这个进程中的一个线程,也称主线程。线程与进程相似,但线程是一个比进程更小的执行单位。一个进程在其执行的过程中可以产生多个线程。与进程不同的是,同进程下的线程共享进程的堆和方法区资源,但每个线程有自己的程序计数器、虚拟机栈和本地方法栈,所以系统在原创 2020-07-05 20:03:05 · 199 阅读 · 0 评论 -
Java并发编程学习系列七:深入了解volatile关键字
文章目录前言volatile的使用volatile保证可见性volatile无法保证原子性volatile禁止指令重排volatile的原理可见性实现禁止指令重排序扩展volatile修饰对象和数组总结参考文献前言volatile 这个关键字可能很多朋友都听说过,它有两个重要的特性:可见性和禁止指令重排序。但是对于 volatile 的使用以及背后的原理我们一无所知,所以本文将带你好好了解一番。由于 volatile 关键字是与 Java的内存模型有关的,因此在讲述 volatile 关键之前,我们先原创 2020-05-29 23:43:03 · 386 阅读 · 1 评论