
【Java-并发编程】
文章平均质量分 58
Java并发编程
一棵树~
just do it
展开
-
ThreadPoolExecutor线程池参数说明
一、ThreadPoolExecutor的重要参数corePoolSize:核心线程数 核心线程会一直存活,及时没有任务需要执行 当线程数小于核心线程数时,即使有线程空闲,线程池也会优先创建新线程处理 设置allowCoreThreadTimeout=true(默认false)时,核心线程会超时关闭queueCapacity:任务队列容量(阻塞队列) 当核心线程数达到最大时,新任务会放在队列中排队等待执行maxPoolSize:最大线程数 当线程数>=co原创 2021-06-10 10:15:04 · 609 阅读 · 0 评论 -
多线程访问Synchronized同步方法的8种使用场景
目录1、场景一:两个线程同时访问同一个对象的同步方法2、场景二:两个线程同时访问两个对象的同步方法3、场景三:两个线程同时访问(一个或两个)对象的静态同步方法4、场景四:两个线程分别同时访问(一个或两个)对象的同步方法和非同步方法5、场景五:两个线程访问同一个对象中的同步方法,同步方法又调用一个非同步方法6、场景六:两个线程同时访问同一个对象的不同的同步方法7、场景七:两个线程分别同时访问静态synchronized和非静态synchronized方法8、场景八:同步方法抛出转载 2021-01-11 00:43:43 · 786 阅读 · 1 评论 -
JUC多线程及并发包总结(1)
1、谈谈对volatile的理解1.1.、volatile是Java虚拟机提供的轻量级的同步机制保证可见性 不保证原子性 禁止指令重排1.2、谈谈JMMJMM(Java内存模型Java Memory Model,简称JMM)本身是一种抽象的概念并不真实存在,它描述的是一组规则或规范通过规范定制了程序中各个变量(包括实例字段,静态字段和构成数组对象的元素)的访问方式。JMM关于同步规定:1.线程解锁前,必须把共享变量的值刷新回主内存 2.线程加锁前,必须读取主内存的最新值到自己的工作原创 2020-10-28 15:56:35 · 241 阅读 · 0 评论 -
多线程分批处理千万级数据示例场景
1、ListUtils工具类(提供将List均分成n个list和将List分成每份count数量的List操作)import java.util.ArrayList;import java.util.List;import java.util.stream.Collectors;import java.util.stream.Stream;public class ListUtils { /** * 将一个list均分成n个list: * @param source *原创 2020-06-26 01:01:13 · 3479 阅读 · 1 评论 -
多线程系列复习【三】多线程高级(Java内存模型,多线程特性,多线程控制类)
目录1、Java内存模型1.1、Java程序执行流程回顾1.2、Java内存模型1.2.1、PC程序计数器1.2.2、Java栈JavaStack(虚拟机栈JVM Stack)1.2.3、方法区MethodArea1.2.4、常量池ConstantPool1.2.5、本地方法栈Native Method Stack2、多线程特性2.1、原子性2.2、可见性2.3、有序性3、多线程控制类3.1、ThreadLocal3.1.1、作用3.1.2、示原创 2020-05-18 00:52:39 · 395 阅读 · 0 评论 -
多线程系列复习【二】多线程基础(线程生命周期、线程安全问题、线程死锁、线程通讯)
4、线程声明周期4.1、新建new关键字创建了一个线程之后,改线程就处于新建状态。 JVM为线程分配内存,初始化成员变量值。4.2、就绪当线程对象调用了start()方法之后,该线程处于就绪状态。 JVM为线程创建方法栈和程序计数器,等待线程调度器调度。4.3、运行就绪状态的线程获得CPU资源,开始运行run()方法,该线程进入运行状态。4.4、阻塞当发生如下情况...原创 2020-03-23 11:08:12 · 581 阅读 · 1 评论 -
多线程系列复习【一】多线程基础(并发、并行、进程、线程、线程创建)
目录1、什么是并发与并行2、什么是进程、线程2.1、进程2.2、线程3、线程创建3.1、继承Thread类3.1.1、第一步:创建自定义的线程类3.1.2、第二步:创建测试类3.2、实现Runnable接口3.2.1、第一步:创建自定义类实现Runnable接口3.2.2.、第二步:创建测试类3.3、实现Callable接口3.4、线程池-Exe...原创 2020-03-22 23:45:10 · 317 阅读 · 0 评论 -
Java多线程和并发基础面试总结
目录一、Java多线程面试问题1.1. 进程和线程之间有什么不同?1.2. 多线程编程的好处是什么?1.3. 用户线程和守护线程有什么区别?1.4. 我们如何创建一个线程?1.5. 有哪些不同的线程生命周期?1.6. 可以直接调用Thread类的run()方法么?1.7. 如何让正在运行的线程暂停一段时间?1.8. 你对线程优先级的理解是什么?1.9. 什么...原创 2019-06-12 11:32:42 · 664 阅读 · 1 评论 -
Java并发编程系列总结
Java多线程学习(一)Java多线程入门 Java多线程学习(二)synchronized关键字(1) Java多线程学习(二)synchronized关键字(2) Java多线程学习(三)volatile关键字 Java多线程学习(四)等待/通知(wait/notify)机制 Java多线程学习(五)线程间通信知识点补充 J...转载 2019-02-25 00:01:24 · 402 阅读 · 0 评论 -
Java中常见的15种锁介绍
在很多并发文章中,会提及各种各样锁如公平锁,乐观锁等等,这篇文章介绍各种锁的分类。介绍的内容如下:1、公平锁 / 非公平锁2、可重入锁 / 不可重入锁3、独享锁 / 共享锁4、互斥锁 / 读写锁5、乐观锁 / 悲观锁6、分段锁7、偏向锁 / 轻量级锁 / 重量级锁8、自旋锁上面是很多锁的名词,这些分类并不是全是指锁的状态,有的指锁的特性,有的指锁的设计,下面总结...原创 2019-01-27 22:04:15 · 1395 阅读 · 0 评论 -
深入理解Java类型信息及并发编程
1、深入理解Java类型信息(Class对象)与反射机制2、深入理解Java枚举类型(enum)3、深入理解Java注解类型(@Annotation)4、深入理解Java类加载器(ClassLoader)5、深入理解Java并发之synchronized实现原理6、Java并发编程-无锁CAS与Unsafe类及其并发包Atomic7、深入理解Java内存模型(JMM)及vo...转载 2019-01-27 00:15:36 · 191 阅读 · 0 评论 -
如何扩展和优化线程池?
1. Executors 线程池工厂能创建哪些线程池先来一个最简单的线程池使用例子:static class MyTask implements Runnable { @Override public void run() { System.out .println(System.currentTimeMillis() + ": Thread ID...原创 2018-10-27 09:31:22 · 953 阅读 · 0 评论 -
java多线程(二)对象及变量的并发访问
1、synchronized同步方法: "非线程安全"其实会在多个线程对同一个对象中的实例变量进行并发访问时发生,产生的后果就是"脏读", 也就取到的数据其实是被更改过的。 "线程安全"就是以获得的实例变量的值是经过同步处理的,不会出现脏读的现象。 1> 方法内的变量为线程安全 "非线程...原创 2018-09-06 14:35:55 · 549 阅读 · 1 评论 -
java多线程(一)多线程基本技能
目录1、进程和多线程的概念及线程的优点:2、使用多线程:2.1、继承Thread类:2.1、实现Runnable接口:2.3、实例变量与线程安全:3、currentThread()方法4、isAlive()方法:5、sleep()方法:6、getId()方法:7、停止线程:7.1、停止不了的线程:7.2、判断线程是否是停止状态:7.3、能停止的线...原创 2018-09-06 14:20:01 · 271 阅读 · 0 评论