多线程
文章平均质量分 78
不想睡觉的橘子君
这个作者很懒,什么都没留下…
展开
-
【Redis】一种常见的Redis分布式锁原理简述
上面实现的分布式锁,解决了如下几个问题不要重复设置锁→setnx被别的线程解锁怎么办→ThreadLocal和UUID只依靠setnx,持有锁的线程挂掉无法释放锁→给锁添加过期时间,expire命令设置过期时间setnx和expire不够原子→set命令和参数ex、nx,或者lua脚本配置命令eval、evalsha过期时间不好评定→加入看门狗守护线程,配合延迟队列,看门狗线程用死循环,使用take方法阻塞的等待将最近要续期的任务,将其续期。原创 2024-11-01 17:12:02 · 916 阅读 · 0 评论 -
【多线程】线程状态与并发三大特性的细节剖析
这篇文章主要用于对于多线程的一些查缺补漏。原创 2024-08-03 11:19:30 · 728 阅读 · 0 评论 -
【面试题】从volatile到 指令重排 再到 happen before规则 最后到 java内存模型三大特性
volatile是Java的一个关键字,它并不是用Java实现的,因为涉及指令重排等更加底层的知识,比起源码更难理解其实现,所以笔者一路看下来,决定自己写一篇文章,总结一下,大致包括的知识点如标题所示,包括了volatile,指令重排,happen before规则,java内存模型三大特性。但是笔者会挑选一个尽量合适的顺序来讲下这些点。在讲volatile或者synchronized时,常会说到原子性、顺序行、可见性等特性,其实这三个特性指的就是指的Java内存模型的三大特性。内存模型而Java内存模型原创 2022-07-23 15:59:38 · 260 阅读 · 0 评论 -
【多线程】创建线程池有几种方式
经过源码的探究,可以看出,线程池的构造,可以使用newThreadPoolExecutor来直接构造一个自定义的线程池,或者Executors的方法来构造6种不同的线程池。Executors中的6种方法,其中有5种都是调用newThreadPoolExecutor来构造线程池,只有抢占式线程池WorkStealingPool是没有调用newThreadPoolExecutor来实现线程池。[1],面试官线程池有哪几种创建方式,能详细的说下么?httpshttpshttpshttps。......原创 2022-07-20 14:49:53 · 557 阅读 · 0 评论 -
【多线程】实现线程到底只有一种方式还是四种方式
而在FutureTask中,重写了RunnableFuture的run方法,它的run方法中,会调用call方法,也就是之前实现Callable接口时重写的线程要做的具体的任务的call方法。实现一个线程,我在初学Java的时候,听到老师讲的方式,有三种,继承Thread,实现Runnable,实现Callable。第二种方法,找一个类,实现Runnable接口,重写run方法,并且将这个实现类的实例,丢到newThread()的构造函数中去。实现线程的第一种方式,继承Thread类,并重写run方法。..原创 2022-07-16 22:10:41 · 254 阅读 · 0 评论 -
【多线程】并行和并发的区别
并发,指的是同一时间多个进程争抢一个cpu资源。一个进程执行,另外的进程必然无法执行。并行和并发,都是在同一时间,有两个及以上的进程需要cpu资源时,发生的情况。并行,是每个进程都有一个cpu资源,同一时间多个进程同时执行。......原创 2022-07-15 09:49:13 · 184 阅读 · 0 评论