juc
文章平均质量分 89
天青色 等烟雨
这个作者很懒,什么都没留下…
展开
-
一个普通的线程池
线程池由一组线程组成的线程集合,它可以维护和管理这些线程的生命周期,并提供一种机制来控制线程的创建、执行和销毁。:线程池可以通过任务队列来存放待执行的任务,当线程池中的线程都在执行任务时,新的任务可以暂时排队等待执行,避免任务丢失或被拒绝。:线程池可以避免频繁地创建和销毁线程,而是通过复用已有的线程来执行任务。:线程池可以将待执行的任务按照一定的调度策略分配给空闲的线程执行。根据线程池的配置参数,决定是否创建新的线程,将任务分配给空闲线程执行,或将任务放入任务队列等待执行。线程池提供了一些策略来处理。原创 2023-06-10 16:21:34 · 824 阅读 · 2 评论 -
synchronized的实现原理以及如何进化
当一个线程访问同步块并且获取锁的时候,会在对象头和栈帧中的锁记录里存储锁偏向的线程id,以后该线程在进入和退出同步块时就不需要进行CAS操作来加锁和解锁,只需要简单的测试一下对象头里面的Mark Word是否存储着指向当先线程的偏向锁。如果线程仍然活着,拥有偏向锁的栈会被执行,遍历偏向对象的锁记录,栈中的锁记录和对象头的Mark Word要么中心偏向于其他线程,要么恢复到无锁或者标记对象不适合作为偏向锁,最后唤醒暂停的线程。锁可以升级但是不能降级,目的就是为了提高获得锁和释放锁的效率。原创 2023-04-02 08:14:08 · 339 阅读 · 0 评论 -
Java对象结构与内置锁
Java内置锁的很多重要信息都存放在对象结构中。原创 2023-03-11 16:00:51 · 533 阅读 · 0 评论 -
对于ThreadLocal的理解
在Java的多线程并发执行的过程中,为了保证多个线程对变量的安全访问,可以将变量放到ThreadLocal类型的对象中,是变量在每一个线程中都有独立的值,不会出现一个线程读取变量时被另一个线程修改的现象。ThreadLocal类通常被翻译为本地变量类或者线程局部变量。ThreadLocal位于JDK的java.lang核心包中。如果程序创建了一个ThreadLocal实例,那么在访问这个变量的值时,每个线程都会拥有一个独立的、自己的本地值。原创 2023-03-04 08:33:30 · 464 阅读 · 0 评论