Java多线程
文章平均质量分 90
Rhenic
Java学习者
展开
-
4、同步、并发、串行、CAS、AQS
13、同步、并发 13.1、并行和并发有什么区别?(还有串行) 并行是指两个或者多个事件在同一时刻发生;而并发是指两个或多个事件在同一时间间隔发生。 并行是在不同实体上的多个事件,并发是在同一实体上的多个事件。 在一台处理器上“同时”处理多个任务,在多台处理器上同时处理多个任务。如hadoop分布式集群。 所以并发编程的目标是充分的利用处理器的每一个核,以达到最高的处理性能。 串行在时间上可能发生重叠,前一个任务没搞定,下一个任务就只能等着(单向单车道,没有超车道) 并行在时间上是重叠的,两个任务在同一时刻原创 2022-05-07 09:10:05 · 123 阅读 · 0 评论 -
3、ThreadLocal
12、ThreadLocal 12.1、ThreadLocal的使用场景 场景 主要用途是为了保持线程自身对象和避免参数传递,主要适用场景是按线程多实例(每个线程对应一个实例)的对象的访问,并且这个对象很多地方都要用到。 原理 为每个线程创建变量副本,不同线程之间不可见,保证线程安全。使用 ThreadLocalMap 存储变量副本,以 ThreadLocal 为 K,这样一个线程可以拥有多个 ThreadLocal 对象。 实际 使用多数据源时,需要根据数据源的名字切换数据源,假设一个线程设置了一个数据源原创 2022-05-07 09:09:49 · 91 阅读 · 0 评论 -
2、线程、线程常用方法、线程池
5、 wait() 与 sleep()区别? 1、来自不同的类 wait() 方法声明在 Object 中,sleep() 方法声明在 Thread 中。 2、有没有释放锁 wait() 释放锁,sleep() 没有释放锁。 3、使用范围不同 wait,notify,notifyAll只能在同步控制方法或同步控制块里面使用,而sleep可以在任何地方使用 4、是否需要捕获异常 sleep必须捕获异常,而wait,notify,notifyAll不需要捕获异常 6、 yield() 调用后线程原创 2022-05-07 09:09:33 · 184 阅读 · 0 评论 -
1、synchronized、Lock、volatile
1、synchronized 1.1 synchronized原理 修饰代码块 底层实现,通过 monitorenter & monitorexit 标志代码块为同步代码块。 修饰方法 底层实现,通过 ACC_SYNCHRONIZED 标志方法是同步方法。 修饰类 class 对象时,实际锁在类的实例上面。 单例模式 public class Singleton { private static volatile Singleton instance = null; private Singl原创 2022-05-07 09:09:13 · 1482 阅读 · 0 评论