![](https://img-blog.csdnimg.cn/20201014180756930.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程面试
多线程面试
WD技术
这个作者很懒,什么都没留下…
展开
-
创建线程池的方式
https://www.cnblogs.com/pcheng/p/13540619.html原创 2022-03-18 08:40:00 · 169 阅读 · 0 评论 -
使用Callable和Future接口创建线程
https://www.cnblogs.com/ganchuanpu/p/7704468.html原创 2022-03-11 20:44:36 · 379 阅读 · 0 评论 -
Thread类中interrupt()、interrupted()和isInterrupted()方法详解
https://blog.csdn.net/qq_39682377/article/details/81449451原创 2022-03-10 08:40:33 · 103 阅读 · 0 评论 -
JAVA可重入锁与不可重入锁
https://www.cnblogs.com/theRhyme/p/9133804.html原创 2022-03-10 08:40:24 · 156 阅读 · 0 评论 -
浅谈偏向锁、轻量级锁、重量级锁
https://www.jianshu.com/p/36eedeb3f912原创 2022-03-10 08:40:17 · 66 阅读 · 0 评论 -
Java锁消除和锁粗化
https://blog.csdn.net/qq_26222859/article/details/80546917原创 2022-03-10 08:40:09 · 81 阅读 · 0 评论 -
ReadAndWriteLock(读写锁)
https://blog.csdn.net/liu_qi_jun/article/details/88600451原创 2022-03-10 08:40:03 · 140 阅读 · 0 评论 -
理解ReentrantLock的公平锁和非公平锁
https://www.cnblogs.com/moxiaotao/p/10283347.html原创 2022-03-09 08:44:05 · 70 阅读 · 0 评论 -
synchronized锁升级
https://blog.csdn.net/tongdanping/article/details/79647337https://www.jianshu.com/p/d61f294ac1a6原创 2022-03-09 08:43:58 · 58 阅读 · 0 评论 -
java自旋锁
https://blog.csdn.net/fuyuwei2015/article/details/83387536原创 2022-03-09 08:43:44 · 46 阅读 · 0 评论 -
reentrantlock底层原理
https://blog.csdn.net/fuyuwei2015/article/details/83719444原创 2022-03-09 08:43:36 · 240 阅读 · 0 评论 -
Java并发之AQS详解
https://www.cnblogs.com/waterystone/p/4920797.html原创 2022-03-09 08:43:28 · 62 阅读 · 0 评论 -
java park
https://www.jb51.net/article/210740.htmhttps://blog.csdn.net/higherzjm/article/details/82700264原创 2022-03-09 08:43:09 · 56 阅读 · 0 评论 -
java 怎么中断一个线程
https://www.cnblogs.com/myseries/p/10918819.html原创 2022-03-09 08:43:01 · 322 阅读 · 0 评论 -
CAS存在的问题以及解决方案
https://blog.csdn.net/hl_java/article/details/90520405原创 2022-03-09 08:42:53 · 275 阅读 · 0 评论 -
CAS原理
1、什么是CAS?CAS:Compare and Swap,即比较再交换。jdk5增加了并发包java.util.concurrent.*,其下面的类使用CAS算法实现了区别于synchronouse同步锁的一种乐观锁。JDK 5之前Java语言是靠synchronized关键字保证同步的,这是一种独占锁,也是是悲观锁。2、CAS算法理解对CAS的理解,CAS是一种无锁算法,CAS有3个操作数,内存值V,旧的预期值A,要修改的新值B。当且仅当预期值A和内存值V相同时,将内存值V修改为B,否则什么都不原创 2022-03-09 08:42:42 · 163 阅读 · 0 评论 -
当我们使用锁同步代码的时候,会在什么时候释放锁呢
1.当前线程的同步方法、代码块执行结束的时候释放。2.当前线程在同步方法、同步代码块中遇到break 、 return 终于该代码块或者方法的时候释放。3.出现未处理的error或者exception导致异常结束的时候释放。4.程序执行了 同步对象 wait 方法 ,当前线程暂停,释放锁...原创 2022-03-08 08:56:03 · 171 阅读 · 0 评论 -
java的8锁问题
https://blog.csdn.net/qq_31748587/article/details/105498566原创 2022-03-08 08:55:56 · 47 阅读 · 0 评论 -
synchronize与lock的区别
https://blog.csdn.net/Maxiao1204/article/details/85065510原创 2022-03-08 08:55:28 · 77 阅读 · 0 评论 -
什么是JMM
https://blog.csdn.net/zjcjava/article/details/78406330原创 2022-03-08 08:55:19 · 63 阅读 · 0 评论 -
volatile关键字及其作用
https://zhuanlan.zhihu.com/p/99240509原创 2022-03-08 08:55:12 · 46 阅读 · 0 评论 -
Java 多线程同步和异步详解
多线程并发时,多个线程同时请求同一个资源,必然导致此资源的数据不安全,A线程修改了B线程的处理的数据,而B线程又修改了A线程处理的数理。显然这是由于全局资源造成的,有时为了解决此问题,优先考虑使用局部变量,退而求其次使用同步代码块,出于这样的安全考虑就必须牺牲系统处理性能,加在多线程并发时资源挣夺最激烈的地方,这就实现了线程的同步机制同步:A线程要请求某个资源,但是此资源正在被B线程使用中,因为同步机制存在,A线程请求不到,怎么办,A线程只能等待下去异步:A线程要请求某个资源,但是此资源正在被B原创 2022-03-08 08:54:47 · 962 阅读 · 0 评论 -
线程池中submit()方法与execute()方法的区别
execute()方法实际上是Executor中声明的方法,在ThreadPoolExecutor进行了具体的实现,这个方法是ThreadPoolExecutor的核心方法,通过这个方法可以向线程池提交一个任务,交由线程池去执行。submit()方法是在ExecutorService中声明的方法,在AbstractExecutorService就已经有了具体的实现,在ThreadPoolExecutor中并没有对其进行重写,这个方法也是用来向线程池提交任务的,但是它和execute()方法不同,它能够返回原创 2022-03-08 08:54:39 · 1877 阅读 · 0 评论 -
线程池的使用
https://blog.csdn.net/qq_43681755/article/details/111057195原创 2022-03-07 20:47:03 · 50 阅读 · 0 评论 -
理解线程池中线程的复用原理
https://www.cnblogs.com/qq289736032/p/11159951.html原创 2022-03-07 20:46:53 · 78 阅读 · 0 评论 -
线程池中阻塞队列的作用?为什么是先添加列队而不是先创建最大线程?线程池中线程复用原理
1、一般的队列只能保证作为一个有限长度的缓冲区,如果超出了缓冲长度,就无法保留当前的任务了,阻塞队列通过阻塞可以保留住当前想要继续入队的任务。阻塞队列可以保证任务队列中没有任务时阻塞获取任务的线程,使得线程进入wait状态,释放cpu资源。阻塞队列自带阻塞和唤醒的功能,不需要额外处理,无任务执行时,线程池利用阻塞队列的take方法挂起,从而维持核心线程的存活、不至于一直占用cpu资源2、在创建新线程的时候,是要获取全局锁的,这个时候其它的就得阻塞,影响了整体效率就好比一个饭店里面有10个(core)正式工原创 2022-03-07 20:46:44 · 1077 阅读 · 0 评论 -
线程池的处理流程和原理
https://www.jianshu.com/p/519803f392dc原创 2022-03-07 20:46:30 · 74 阅读 · 0 评论 -
为什么要使用线程池
1.为什么要使用线程池在java中,如果每个请求到达就创建一个新线程,开销是相当大的。在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多。除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源。如果在一个jvm里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足。为了防止资源不足,服务器应用程序需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁线程的次数,特别是一些资源耗费比较大的原创 2022-03-07 20:46:20 · 2745 阅读 · 0 评论 -
ThreadLocal详解
https://blog.csdn.net/wangnanwlw/article/details/108866086原创 2022-03-08 08:54:29 · 51 阅读 · 0 评论 -
什么是守护线程?
Java提供了两种线程:守护线程和用户线程守护线程,是指在程序运行时 在后台提供一种通用服务的线程,这种线程并不属于程序中不可或缺的部分。通俗点讲,任何一个守护线程都是整个JVM中所有非守护线程的"保姆"。用户线程和守护线程几乎一样,唯一的不同之处在于如果用户线程已经全部退出运行,只剩下守护线程存在了,JVM也就退出了。因为当所有非守护线程结束时,没有了被守护者,守护线程也就没有工作可做,当然也就没有继续执行的必要了,程序就会终止,同时会杀死所有的"守护线程",也就是说只要有任何非守护线程还在运行,程序原创 2022-03-07 20:46:09 · 16490 阅读 · 2 评论 -
Runnable和Thread的区别
1、Runnable的实现方式是实现其接口即可2、Thread的实现方式是继承其类3、Runnable接口支持多继承,但基本上用不到4、Thread实现了Runnable接口并进行了扩展,而Thread和Runnable的实质是实现的关系,不是同类东西,所以Runnable或Thread本身没有可比性。...原创 2022-03-07 20:46:00 · 103 阅读 · 0 评论 -
java中的线程安全是什么?
java中的线程安全是什么:就是线程同步的意思,就是当一个程序对一个线程安全的方法或者语句进行访问的时候,其他的不能再对他进行操作了,必须等到这次访问结束以后才能对这个线程安全的方法进行访问。什么叫线程安全:如果你的代码所在的进程中有多个线程在同时运行,而这些线程可能会同时运行这段代码。如果每次运行结果和单线程运行的结果是一样的,而且其他的变量的值也和预期的是一样的,就是线程安全的。线程安全问题都是由全局变量及静态变量引起的。若每个线程中对全局变量、静态变量只有读操作,而无写操作,一般来说,这个全原创 2022-03-07 20:45:51 · 2025 阅读 · 0 评论 -
synchronized的四种用法
https://www.cnblogs.com/lukelook/p/9946065.html原创 2022-03-07 20:45:42 · 90 阅读 · 0 评论 -
锁池和等待池
在Java中,每个对象都有两个池,锁(monitor)池和等待池**锁池:**假设线程A已经拥有了某个对象(注意:不是类)的锁,而其它的线程想要调用这个对象的某个synchronized方法(或者synchronized块),由于这些线程在进入对象的synchronized方法之前必须先获得该对象的锁的拥有权,但是该对象的锁目前正被线程A拥有,所以这些线程就进入了该对象的锁池中。等待池:假设一个线程A调用了某个对象的wait()方法,线程A就会释放该对象的锁(因为wait()方法必须出现在synchro原创 2022-03-06 10:07:46 · 1140 阅读 · 0 评论 -
浅谈sleep、wait、yield、join区别
https://blog.csdn.net/ywlmsm1224811/article/details/94022647原创 2022-03-06 10:07:36 · 61 阅读 · 0 评论 -
CAS机制中的ABA问题
在进行CAS操作的时候,会检查值有没有发生变化。如果没有变化则更新。如果发生变化了,则进行自旋。但是有种情况是,预期的值看似没有变化,但是实际上的确变化了,例如原来的值是A,后来变成了B,最后又变成了A。那么使用CAS机制进行检查时会发现值没有变化,但是实际上值确实发生了变化。解决思路就是利用版本号,每变化一次版本号加一。例如,最开始值是A,版本是1。后来变成了B,版本是2。最后又变成A,版本号是3。这样不但检查值有没有变化,还要检查版本号有没有变化。如果全部相等,再更新。...原创 2022-03-05 10:29:25 · 155 阅读 · 0 评论 -
线程创建的四种方式
https://blog.csdn.net/m0_37840000/article/details/79756932原创 2022-03-06 10:07:26 · 46 阅读 · 0 评论 -
JAVA线程的生命周期
https://blog.csdn.net/yangyechi/article/details/88195068原创 2022-03-06 10:07:12 · 124 阅读 · 0 评论 -
java并发三大特性
https://www.jianshu.com/p/a529f47d8103原创 2022-03-06 10:07:03 · 121 阅读 · 0 评论 -
java并发 并行 串行
并发:并发是指允许多个任务互相干扰,在一个时间点上,只有一个任务在执行。交叉时间段只能选择一个任务来完成。并行:并行是在同一时刻互不干扰的进行任务。多个事件在同一时刻发生串行:串行在时间上不可能发生重叠,前一个任务没有搞定,下一个任务不会开始。...原创 2022-03-06 10:06:54 · 484 阅读 · 0 评论