Java多线程
文章平均质量分 89
java多线程学习笔记
Kaite_zhh
IT学习者
展开
-
多线程面试题
一.多线程1、sleep、join() 、yiled() 的区别 sleep:让线程睡眠指定时间, 会释放cpu时间片 join: 本质是wait/notify, 让线程的执行结果可见 yiled 让出时间片.触发重新调度.;作用效果和sleep(0)一样,触发一次切换2、Java中能够创建volatile数组吗? 可以创建, Volatile 对于引用可见,对于数组中的元素不具备可见性。3、++操作是线程安全的吗? ...原创 2021-06-02 15:44:48 · 116 阅读 · 1 评论 -
Java多线程(七) ——线程池 ThreadpoolExecutor 的底层实现
一.前言 1.为什么要用线程池 如果每个程序请求到达就创建一个新线程,那么创建和销毁线程花费的时间和消耗的系统资源都相当大,如果在一个 Jvm 里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足。为了解决这个问题,就有了线程池的概念,线程池的核心是提前创建好若干个线程放在一个容器中。如果有任务需要处理,则将任务直接分配给线程池中的线程来执行就行,任务处理完以后这个线程不会被销毁,而是等待后续分配任务。 java.util.concurre...原创 2021-05-30 17:58:25 · 244 阅读 · 0 评论 -
Java多线程(六) —— 线程池的基本介绍
一.前言 1.为什么要用线程池 如果每个程序请求到达就创建一个新线程,那么创建和销毁线程花费的时间和消耗的系统资源都相当大,如果在一个 Jvm 里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足。为了解决这个问题,就有了线程池的概念,线程池的核心是提前创建好若干个线程放在一个容器中。如果有任务需要处理,则将任务直接分配给线程池中的线程来执行就行,任务处理完以后这个线程不会被销毁,而是等待后续分配任务。 2.线程池的优势降低创建线程和销...原创 2021-05-28 18:24:27 · 118 阅读 · 0 评论 -
Java多线程(五) —— LOCK
一、LOCK1.概念Lock 本质上是一个接口,它定义了释放锁和获得锁的抽象方法,定义成接口就意味着它定义了锁的一个标准规范,也同时意味着锁的不同实现。 2.常用实现ReentrantLock(重入锁) 线程在获得锁之后,再次获取该锁不需要阻塞,而是直接关联一次计数器增加重入次数。synchronized 和ReentrantLock 都是可重入锁. ReentrantReadWriteLock 在这个类中维护了两个锁,一个是 ReadLoc...原创 2021-05-18 15:49:17 · 146 阅读 · 0 评论 -
Java多线程(四) —— ThreadLocal 解析
一、应用场景和使用 场景:当一个全局共享变量/对象被多个线程调用时,会相互影响。当我们需要线程级别的资源隔离时就可以用到ThreadLocal。public class ThreadLocalDemo { private static int num=0; public static void main(String[] args) { Thread[] thread=new Thread[5]; for (int i=0;i<5;..原创 2021-05-17 13:52:06 · 133 阅读 · 0 评论 -
Java多线程(三) —— 可见性问题和JMM
一.要解决的问题 1.可见性(多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。) 多线程中若一个资源被多个线程同时访问和修改,在不进行处理的情况下,可见性就会被破坏二.可见性问题简述 1.缓存一致性问题 为了解决cpu、内存、IO设备的处理速度不匹配问题,CPU层面添加了高速缓存。但因为高速缓存的存在,会导致一个缓存一致性问题2.缓存一致性协议状态 描述 监听任务和处理 M 修改 (M...原创 2021-05-12 15:29:20 · 346 阅读 · 0 评论 -
Java多线程(二) —— synchronized详解
一.多线程引发的问题 1.原子性(一个操作或者多个操作,要么全部执行并且执行的过程不会被任何因素打断,要么就都不执行) 多线程中,存在线程调度和切换,原子性就会被破环。导致运行结果出现问题 2.可见性(多个线程访问同一个变量时,一个线程修改了这个变量的值,其他线程能够立即看得到修改的值。) 多线程中若一个资源被多个线程同时访问和修改,在不进行处理的情况下,可见性就会被破坏二.锁(Synchronized)1.本质:共享资源2.使用:可修饰在方法层面和代码块...原创 2021-04-27 16:16:43 · 125 阅读 · 0 评论 -
JAVA多线程(一)------线程创建、运行状态和终止
将最近学习的JAVA多线程知识在这里进行总结和分享,以便以后查看。所有内容仅供参看,有不正确的地方欢迎指出。一.基本概念1.常见术语多线程:指的是这个程序(一个进程)运行时产生了不止一个线程 并行:多个cpu实例或者多台机器同时执行一段处理逻辑 并发:通过cpu调度算法,不断切换时间片,执行线程.当一个线程处在运行状态时,其它线程处于挂起状态 线程安全:在并发情况下...原创 2019-05-29 19:07:36 · 354 阅读 · 0 评论