
多线程
文章平均质量分 50
chuixue24
这个作者很懒,什么都没留下…
展开
-
记一次java线程阻塞状态分析
以上4个线程都在等到同一把锁 lock <0x00000006c1d9aaf0>。而该锁被以下线程持有:原创 2025-01-02 18:01:12 · 1003 阅读 · 0 评论 -
jvm同步控制指令
原创 2021-08-10 19:24:05 · 149 阅读 · 0 评论 -
同步与阻塞的区别
阻塞:表示该线程被挂起,失去cpu操作权利,等待被唤醒。同步:线程仍然在运行,没有被挂起,比如在一个线程中,需要调用一个本地方法或者远程方法,在本地方法或远程方法返回前,该线程不能继续向下执行。...原创 2021-02-26 12:25:43 · 2485 阅读 · 1 评论 -
Java多线程Condition接口原理详解
Condition接口提供了类似Object的监视器方法,与Lock配合可以实现等待/通知模式,但是这两者在使用方式以及功能特性上还是有差别的Condition接口详解Condition定义了等待/通知两种类型的方法,当前线程调用这些方法时,需要提前获取到Condition对象关联的锁。Condition对象是由Lock对象(调用Lock对象的newCondition()方法)创建出来的,换句话说,Condition是依赖Lock对象的。Lock lock = new ReentrantLoc转载 2021-01-03 11:22:59 · 167 阅读 · 0 评论 -
进程,线程与多核,多cpu之间的关系
目录cpu架构和工作原理多核cpu和多cpu架构cpu的缓存进程和线程进程和线程在多核cpu,多cpu中的运行关系cpu架构和工作原理计算机有5大基本组成部分,运算器,控制器,存储器,输入和输出。运算器和控制器封装到一起,加上寄存器组和cpu内部总线构成中央处理器(CPU)。cpu的根本任务,就是执行指令,对计算机来说,都是0,1组成的序列,cpu从逻辑上可以划分为3个模块:控制单元、运算单元和存储单元。这三个部分由cpu总线连接起来。CPU的运行原理就是:控制单元在转载 2020-12-31 10:05:23 · 205 阅读 · 0 评论 -
redis分布式锁源码
public class DistributeLockByRedis implements DistributeLock { private static Logger log = LoggerFactory.getLogger(DistributeLockByRedis.class); private static final Long RELEASE_SUCCESS = 1L; private static final String RELEASE_SCRIPT = "if redis...原创 2020-12-16 18:00:09 · 213 阅读 · 0 评论 -
ReentrantReadWriteLock读写锁的使用
类ReentrantLock具有完全互斥排他的效果,即同一时间只有一个线程在执行ReentrantLock.lock()后面的代码。这样虽然保证了线程的安全性,但是效率低下。JDK提供了ReentrantReadWriteLock读写锁,使用它可以加快效率,在某些不需要操作实例变量的方法中,完全可以使用读写锁ReemtrantReadWriteLock来提升该方法的运行速度。 读写锁表示有两个锁,一个是读操作相关的锁,也称为共享锁;另一个是写操作相关的锁,也叫排他锁。也就是多个读锁之间不互斥,读锁与写转载 2020-11-12 14:38:49 · 299 阅读 · 0 评论 -
log4j2的性能为什么这么好?都是因为disruptor
一、logback和log4j2压测比较1、logback压测数据logback压测数据,50个线程,500万条日志写入时间。 logback:messageSize = 5000000,threadSize = 50,costTime = 27383ms logback:messageSize = 5000000,threadSize = 50,costTime = 26391ms logback:messageSize = 5000000,threadSize.转载 2020-10-30 11:32:11 · 834 阅读 · 2 评论 -
如何结束线程-线程中断
停止现成的方式线程停止的方式:线程执行完毕,自然会停止 异常退出 设置了标志位,当标志位为false时退出 线程中断退出(这也是一道常见面试题)线程函数执行完毕正常退出和发生异常被迫退出都不受我们控制,下面讨论控制线程停止的方式。设置退出标志位package com.sync.demo;import javax.swing.text.html.HTML.Tag;public class Demo5 { public static void main(String[] a转载 2020-10-14 08:58:22 · 319 阅读 · 0 评论 -
线程复用时Threadlocal需要注意的地方
Threadlocal为每个使用该变量的线程提供独立的变量副本。使用的情况:对每一个线程都必须持有一个类的实例,而且这个类是可变的(不可变的就是线程安全的,全部线程使用一个就可以了),例如hibernate对session的处理。问题场景:用户登录时,token保存在ThreadLocal里,但是经常偶现 token失效(在tonken在有效时间里)产生原因:使用线程池或有复用线程时,复用同一个线程时,每次请求结束后ThreadLoca的值l没有清空,导致第二次使用时ThreadLo...原创 2020-06-09 14:08:07 · 980 阅读 · 0 评论 -
ReentrantReadWriteLock用法
介绍ReentrantLock是互斥排他锁,同一时间只能有一个线程在执行任务,ReentrantLock支持锁的重入功能,虽然保证了线程的安全性,但是效率不高,实际上应该是写操作互斥,读操作共享。而jdk提供了读写锁ReentrantReadWriteLock。读读共享public class MyTask { private ReentrantReadWriteLo...转载 2020-04-27 18:12:33 · 690 阅读 · 0 评论 -
java多线程中的sleep()、yield()、join()和wait()
网上有不少关于sleep()、join()和wait()的文章。比如很多类似这样的标题“Thread的sleep()、join()和wait()”。严格来讲,这样的标题,不够严谨的背后或者是表达的不精准,也可能是对一些概念的理解有所模糊。首先:sleep()和yield()方法是Thead的静态方法,而join是Thread的实例方法,wait()是Object的方法。public...原创 2020-01-08 11:46:27 · 468 阅读 · 0 评论