![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程与高并发
文章平均质量分 56
多线程与高并发的实践,主要是工作中用的应用
琴上那本书
这个作者很懒,什么都没留下…
展开
-
volatile和synchronized的区别
volatile volatile的作用 保证线程可见性(堆内存中) MESI(缓存一致性协议)CPU级缓存一致性 禁止指令重排(CPU) synchronized 底层实现 早期synchronized是重量级锁,需要去系统申请锁,效率非常低 JavaSE1.6之后引入 偏向锁–》自旋锁–》重量级锁 偏向锁:只有一个线程访问的时候给object对象头上markword记录这个线程,内部实现的时候只记录的线程ID 执行时间短、线程数少可以用自旋锁 执行时间长、线程数多可以用重量级锁 vo原创 2021-08-10 17:30:23 · 121 阅读 · 0 评论 -
ThreadPoolExecutor源码详解一
ThreadPoolExecutor源码详解一原创 2021-07-15 17:13:01 · 78 阅读 · 0 评论 -
Java常用线程池体系及源码解读
Java常用线程池体系 结构图: 接口说明 Executor:线程池顶级接口; ExecutorService:线程池次级接口,对Executor做了一些扩展,增加了一些功能; ScheduledExecutorService:对ExecutorService做了一些扩展,增加一些定时任务相关的功能; AbstractExecutorService:抽象类,运用模板方法设计模式实现了一部分方法; ThreadPoolExecutor:普通线程池类,包含最基本的一些线程池操作相关的方法实现; Schedu原创 2021-07-06 21:12:43 · 121 阅读 · 0 评论 -
JAVA中创建线程的三种方式及区别
JAVA创建线程的三种方式及区别 线程应用的几种场景: 继承Thread 实现Runnable 实现Callable与Future 优劣势 1.继承Thread 定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体 创建Thread子类的实例,即创建了线程对象。 调用线程对象的start()方法来启动该线程。0 代码: package com.iread7.juc; public class ThreadDemo exten原创 2021-07-05 16:03:25 · 259 阅读 · 0 评论