![](https://img-blog.csdnimg.cn/20190927151101105.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
javaSE
javaSE内容详细介绍
renhrong
这个作者很懒,什么都没留下…
展开
-
Java中的Comparable和Comparator接口
java中Comparable接口和Comparator接口介绍转载 2022-12-16 11:42:11 · 68 阅读 · 0 评论 -
线程池介绍
1传统创建线程的方式带来的弊端?1.创建和销毁线程需要时间,假设一个服务器完成一项任务所需时间为:T1 创建线程时间,T2 在线程中执行任务的时间,T3 销毁线程时间。如果:T1 + T3 远大于 T2,那么会得不偿失。2.其次线程也需要占用内存空间,大量的线程会抢占宝贵的内存资源,可能会导致out of memory异常。3.且大量的线程回收也会给GC带来很大的压力,延长GC的停顿时间。4.最后,大量的线程也会抢占cpu的资源,cpu不停的在各个线程上下文切换中,反而没有时间去处理线程运行的时候该原创 2020-09-09 16:48:07 · 123 阅读 · 0 评论 -
ReentrantLock
原来刨析过一遍ReentrantLock的源码;但是时间长了;底层原理和实现也记不太清了;所以,再深入看下源码ReentrantLock的原理:AQS介绍ReentrantLock加锁(公平,不公平)ReentrantLock释放锁在创建ReentrantLock的实例的时候;可以传入指定的参数:true或者false;ReentrantLock reelock=new ReentrantLock(true);传入为true表示生成的为公平性锁;传入的为false表示生成的非公平性锁Reent原创 2020-09-08 20:50:53 · 170 阅读 · 0 评论 -
可重入锁和非重入锁
首先来解释一下什么叫做可重入锁;可重入锁就是可以重入的锁;比如有一个线程访问一个类中的普通方法时;获取到了临界资源,持有锁;那么在执行该方法中时,其内层调用方法也需要获取同样的锁;那么内层方法就会自动获取锁;举一个例子:synchronized void setA () throws Exception{ Thread.sleep(1000); setB();}synchronized void setB () throws Exception{ Thread.sleep(原创 2020-09-08 13:50:31 · 280 阅读 · 0 评论