多线程
文章平均质量分 88
秃头小宝儿
小白菜初来乍到,尽心尽力
展开
-
多线程-高阶(策略锁、CAS、JUC、ConcurrentHashMap)
多线程1.常见的策略锁(1)乐观锁(2)悲观锁(3)公平锁和非公平锁(4)独占锁和共享锁一级目录一级目录一级目录二级目录三级目录1.常见的策略锁(1)乐观锁乐观锁:它认为一般情况下不会出现问题,所以他在使用的时候不会加锁,只有在数据修改的时候才会判断有没有锁竞争,如果没有就会直接修改数据,如果有则会返回失败信息给用户处理。(2)悲观锁悲观锁:悲观锁任务只要执行多线程就会出现问题,所以在进入方法之后就会直接加锁。悲观锁的实现:synchronized 可参考(3)公平锁和非公平锁原创 2021-06-11 11:34:08 · 2551 阅读 · 0 评论 -
单例模式(饿汉方式、懒汉方式)
单例模式1.饿汉方式(线程安全的)(1)代码实现(2)饿汉方式的优缺点优点缺点2.懒汉方式(1)代码实现①懒汉实现版本一(非线程安全的)②版本二:可以保证线程安全,锁粒度太多,性能不高③双重校验锁④防止指令重排序单例模式:全局唯一并且所有程序都可以使用的对象,就是单例模式。1.饿汉方式(线程安全的)(1)代码实现public class ThreadDemo84 { //单例类 static class Singleton{ //1.将构造函数设置为私有的(不让外部常原创 2021-06-10 15:43:02 · 1423 阅读 · 0 评论 -
线程安全的解决方案(ThreadLocal详解)
ThreadLocal1.线程安全的解决方案(1)选择ThreadLocal还是锁?(2)ThreadLocal的使用方法(3)ThreadLocal的创建和初始化一级目录二级目录三级目录1.线程安全的解决方案1.加锁(synchronized 、Lock:加锁可以解决线程安全的问题,但因为排队处理,所以会带来一定的性能消耗)2.设置私有变量有没有一种方案既可以避免加锁排队执行,又不会每次执行任务都需要重新创建私有变量呢?答:有。ThreadLocal线程的本地变量,每个线程创建一个私原创 2021-06-09 13:45:02 · 3049 阅读 · 2 评论 -
多线程-(线程池)
线程池1.线程池(1)线程的缺点(2)线程池的优点(3)线程池的创建①创建固定个数的线程池②创建带缓存线程池③创建可以执行定时任务的线程池④创建单线程执行定时任务的线程池⑤创建单个线程池⑥根据当前的硬件CPU生成对应个数的线程池,并且是异步处理。(JDK8+)2.原始的线程池创建方式ThreadPoolExecutor()(1)代码实现(2)线程池的拒绝策略(3)ThreadPoolExecutor执行流程:核心线程数、最大线程数、任务队列(4)线程池执行的2种方式(5)线程池终止的2种方式(6)线程池的状原创 2021-06-07 22:57:37 · 1758 阅读 · 0 评论 -
多线程-初阶(synchronized关键字和volatile关键字、wait\sleep 、死锁)
多线程编程1.Synchronized关键字(1)synchronized的实现(2)synchronized的3种使用场景(3)synchronized锁升级的过程(jdk 1.6优化)(4)synchronized和Lock的区别(5)Lock手动锁(6)公平锁和非公平锁2.volatile关键字3.通信-对象的等待集wait set(1)wait()方法(2)面试题:wait和sleep区别?(3)为什么wait会释放锁?而sleep不会释放锁?(4)为什么wait是Object的方法?而sleep是原创 2021-06-02 23:06:30 · 1703 阅读 · 2 评论 -
多线程-初阶(一)
多线程编程1.线程(Thread)(1)面试题:进程VS线程(2)线程的创建方式①方式一:继承Thread类②方式二:实现Runnable接口③方式三:Callable+Future接收线程执行之后的返回值(3)线程休眠(sleep)(4)创建多少线程合适?2.Thread 类及常见方法(1)Thread 的常见构造方法(2)Thread 的几个常见属性(3)面试题:start() 和 run()(4)线程中断的方式(5)判断线程终止的方式3.线程的状态(1)线程的所有状态(2)线程的状态和转移4.线程不安原创 2021-05-31 22:57:56 · 1259 阅读 · 0 评论