
JUC
文章平均质量分 73
Java编程小辉
两年半Java开发经验,24届毕业生
GitHub:https://github.com/qiuquanhui 正在求职找工作中
展开
-
线程池参数策略
线程池维护一组核心线程池数的线程,当有超过该线程数的任务时,会被放在堵塞队列中等待,如果任务太多,堵塞队列也满了的话,会判断当前的线程数是否小于最大的线程数,是的话就会继续创建线程。CPU密集型:计算机应用的类型,为了可以充分的发挥CPU,线程池的数量一般为 CPU 的核的个数或倍数。当创建到等于最大线程池数的线程之后,如果还有任务的出现,并且把阻塞队列也满了,此时就会使用拒绝策略。使用超过核心线程数的存放时间,一般短的任务可以设置较短的存活时间,长的任务设置较长的存放时间。原创 2024-07-16 14:23:58 · 477 阅读 · 0 评论 -
Java所有的锁
又名排他锁,互斥锁,只有一个线程可以获取,一般为写锁,当有一个线程获取到独享锁,其他线程都不可以获取锁,获取锁的线程可以写入数据,修改数据等等,直到该线程释放,其余线程才可以获取锁。又名读锁,当一个线程获取到该共享锁时,其他线程也可以获取共享锁,但是不能获取其他的锁,多个线程可以获取,ReentrantReadWriteLock 中的读锁就是共享锁, 也一般为读锁。非公平锁的效率比较快,因为如果是公平锁,每一次获取锁就要唤醒一个线程,CPU 切换线程状态是比较耗时的,会消耗 CPU 的资源。原创 2024-07-16 11:14:10 · 545 阅读 · 0 评论 -
Java所有的锁
在尝试获取锁失败后,线程不会阻塞,通过自旋尝试继续获取锁,等待锁的释放。线程到了之后先尝试获取锁,获取不到再排队,优点是:提高了 CPU 的吞吐效率,减少了 CPU 切换线程状态的次数。缺点:线程可能饿死。非公平锁的效率比较快,因为如果是公平锁,每一次获取锁就要唤醒一个线程,CPU 切换线程状态是比较耗时的,会消耗 CPU 的资源。非公平锁,线程一到先获取锁,而不是先堵塞,这样有几率减少 CPU 的切换线程状态的次数,减少 CPU 的压力。反之,在外层获取锁的线程,不可在内层中继续获取相同对象的锁。原创 2024-06-14 10:49:33 · 422 阅读 · 1 评论 -
JUC基础概念
JUC 是 Java.utils.concurrent 包内的类,是为了开发者可以在多线程的情况下减少竞争条件和防止死锁而出现的。原创 2024-06-14 10:48:44 · 501 阅读 · 0 评论 -
线程池与线程池参数策略
线程池维护 corePoolSize 的线程,当有超过该线程数的任务时,会被放在堵塞队列中等待,如果任务太多,堵塞队列也满了的话,会判断当前的线程数是否小于最大的线程数,是的话就会继续创建线程。CPU密集型:计算机应用的类型,为了可以充分的发挥CPU,线程池的数量一般为CPU的核的个数或倍数。I/O 密集型:使用对网络直接的传输,输入输出,对数据库操作等,这个操作可以设置较大的线程池数量。使用超过核心线程数的存放时间,一般短的任务可以设置较短的存活时间,长的任务设置较长的存放时间。原创 2024-05-09 21:23:09 · 382 阅读 · 0 评论 -
Sychronized 和 Lock 的区别
注意事项:锁的粒度:尽量要减少锁的粒度就是同步的代码的数量。锁,锁的是当前的对象。锁,可以让一个线程多次获取锁。死锁:当使用不恰当会出现死锁。同步代码块时,sychronized 锁的是当前调用的实例对象同步方法时,sychronized 锁的是当前调用的实例对象同步类的静态方法时,sychronized 锁的是当前 Class 类可以搭配Object 类的 wirte ,notify等方法灵活使用锁。原创 2024-05-08 19:53:19 · 340 阅读 · 0 评论 -
JUC基础概念
JUC 是 Java.utils.concurrent 包内的类,是为了开发者可以在多线程的情况下减少竞争条件和防止死锁而出现的。原创 2024-05-06 13:34:20 · 344 阅读 · 2 评论