![](https://img-blog.csdnimg.cn/20201014180756927.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
java多线程相关
chenfuguocode
这个作者很懒,什么都没留下…
展开
-
Java多线程-马士兵高并发视频教程笔记
Java多线程基础基础创建线程Java中创建线程主要有三种方式:继承Thread类创建线程类 定义Thread类的子类,并重写该类的run方法,该run方法的方法体就代表了线程要完成的任务。因此把run()方法称为执行体 创建Thread子类的实例,即创建了线程对象 调用线程对象的start()方法来启动该线程 通过Runnable接口创建线程类 定义runnable接口的实现类,并重写该接口的run()方法,该run()方法的方法体同样是该线程的线程执行体 创建 Ru转载 2020-10-21 11:10:51 · 513 阅读 · 0 评论 -
volatile作用及应用举例
作用保证线程可见性 【不能代替synchronized 保证原子性】禁止指令重排序 细节与CPU有关应用双重判断单例 要不要加volatile 需要 一定需要 防止指令重排 【synchronized 不能防止重排序】public class SingletonClass { private volatile static SingletonClass instance = null;public static SingletonClass getInsta原创 2020-09-30 16:59:54 · 151 阅读 · 0 评论 -
synchronized理解及优化
synchronized(Object)Object不要使用String常量 Integer 和Long锁的是对象不是代码 this XXX.class 通过对象头上的标识锁定方法和非锁定方法同时执行锁升级:偏向锁(只有一个线程的时候)、自旋锁、重量级锁代码执行快 线程少 使用自旋锁 代码执行慢 线程多 使用重量级锁优化:锁的细化:同步代码块中的代码越少越好。锁的粗化:很多细粒度的细化不如加粗。将锁对象final化 避免别修改 导致锁失效。不要使用String作为锁。原创 2020-09-30 16:55:05 · 151 阅读 · 0 评论