随笔分类 -  java高级---并发

摘要:并发和并行的理解。区别。 多线程并发编程的好处。 线程安全问题的理解。 阅读全文
posted @ 2021-12-08 12:53 lq-12040 阅读(28) 评论(0) 推荐(0) 编辑
摘要:作用:子线程可以访问父线程设置的本地变量。 应用场景: 子线程需要使用存放在threadLocal变量中的用户登录信息; 中间件需要把统一的id追踪的整个调用链路记录下来。 实现原理(代码分析): 阅读全文
posted @ 2021-12-08 12:47 lq-12040 阅读(22) 评论(0) 推荐(0) 编辑
摘要:JUC 包中的原子类是哪 4 类? 基本类型 AtomicInteger:整形原子类 AtomicLong:长整型原子类 AtomicBoolean:布尔型原子类 数组类型 AtomicIntegerArray:整形数组原子类 AtomicLongArray:长整形数组原子类 AtomicRefer 阅读全文
posted @ 2021-11-17 15:59 lq-12040 阅读(31) 评论(0) 推荐(0) 编辑
摘要:线程池的创建: FixedThreadPool : 该方法返回一个固定线程数量的线程池。该线程池中的线程数量始终不变。当有一个新的任务提交时,线程池中若有空闲线程,则立即执行。若没有,则新的任务会被暂存在一个任务队列中,待有线程空闲时,便处理在任务队列中的任务。 SingleThreadExecut 阅读全文
posted @ 2021-11-17 14:13 lq-12040 阅读(16) 评论(0) 推荐(0) 编辑
摘要:ThreadLocal的作用是提供线程内的局部变量,这种变量在线程的生命周期内起作用,减少同一个线程内多个函数或者组件之间一些公共变量的传递的复杂度。 阅读全文
posted @ 2021-11-17 14:02 lq-12040 阅读(24) 评论(0) 推荐(0) 编辑
摘要:重排序:jvm虚拟机允许在不影响代码最终结果的情况下,可以乱序执行。 内存屏障:可以阻挡编译器的优化,也可以阻挡处理器的优化 保证特定操作的执行顺序 保证某些变量的内存可见性 happens-before原则: 1:一个线程的A操作总是在B之前,那多线程的A操作肯定实在B之前。 2:monitor 阅读全文
posted @ 2021-11-17 13:52 lq-12040 阅读(59) 评论(0) 推荐(0) 编辑
摘要:volatile是一个轻量级的同步机制。不会阻塞线程。 保证可见性(被volatile关键字修饰的变量 一个线程修改后的值,所有线程都可见。) 不保证原子性(原子性:一个操作或者指令、事务,需要整体的执行成功,要么整体的失败。不能被分割。) 禁止指令重排(指令重排:单线程环境下确保最终执行结果和程序 阅读全文
posted @ 2021-11-17 13:49 lq-12040 阅读(39) 评论(0) 推荐(0) 编辑
摘要:简单了解: 可重入锁,指的是自己可以再次获取自己的内部锁。 是 JDK 层面实现的(也就是 API 层面,需要 lock() 和 unlock() 方法配合 try/finally 语句块来完成) 底层原理 使用demo 与synchronized关键字的区别: 实现层面不同。 等待可中断 : Re 阅读全文
posted @ 2021-11-17 13:48 lq-12040 阅读(35) 评论(0) 推荐(0) 编辑
摘要:简单了解: 对共享资源进行加锁,防止多线程出现并发安全问题。 jvm(操作系统)层面上实现的加锁,解锁。 底层原理实现: monitorenter指令,会尝试获取对象的锁,如果锁的计数器为 0 则表示锁可以被获取,获取后将锁计数器设为 1 也就是加 1。 monitorexit指令,将锁计数器设为 阅读全文
posted @ 2021-11-17 13:43 lq-12040 阅读(30) 评论(0) 推荐(0) 编辑
摘要:参考学习https://www.cnblogs.com/dolphin0520/p/3920373.html这篇文章,之后自己再添加 阅读全文
posted @ 2021-04-14 14:19 lq-12040 阅读(14) 评论(0) 推荐(0) 编辑

点击右上角即可分享
微信分享提示