并发&JUC
文章平均质量分 72
并发&JUC 后端
兔子队列
Apache Dubbo Contributor;
个人博客:icpc.cloud;
25届大三在校,acm退役的后端选手汤键
展开
-
并发-sleep更优雅的实现方案:TimeUnit.枚举常量.sleep()
首先给出结论: 线程使用中的暂停,建议优先使用TimeUnit类中的sleep() 但需要注意传入时间小于0的异常情况 TimeUnit是java.util.concurrent包下的一个类名 主要功能是暂停线程的操作 拥有与Thread.sleep()一样的功能都是暂停线程,但TimeUnit提供了可读性更好的线程暂停操作 可以指定DAYS、HOURS、MINUTES、SECONDS、MILLISECONDS和NANOSECONDS 而Thread.sleep()参数如下: 它可以原创 2024-05-15 21:51:30 · 1448 阅读 · 0 评论 -
并发-守护线程setDaemon()
并发-守护线程setDaemon()为什么存在什么是守护线程创建守护线程在使用守护线程时需要注意以下几点可以使用isDaemon()方法来检查线程是否是守护线程例1:上面提到当JVM中只剩下守护线程的时候,JVM就会退出,那么写段代码测试下例2:thread是用户线程,主线程结束后,thread会继续运行例3:thread是守护线程,主线程结束后,thread会随即停止原创 2024-05-12 22:18:10 · 2695 阅读 · 0 评论 -
并发-判断线程对象是否处于活动状态 - isAlive
并发编程-判断线程对象是否处于活动状态 - isAlive原创 2024-05-12 14:08:53 · 2831 阅读 · 0 评论 -
并发-线程停止、中断之最佳实践
并发-线程停止、中断之最佳实践前言原理介绍(使用interrupt进行通知,而不是强制停止)Thread.interrupt()最佳实践小结(如何停止线程?)原创 2024-05-05 23:25:47 · 2031 阅读 · 0 评论 -
并发-线程的 6 个状态(生命周期)
并发-线程的 6 个状态(生命周期)状态解释状态间的转化原创 2024-05-04 20:20:31 · 1582 阅读 · 0 评论 -
并发-启动线程的正确姿势
启动线程的正确姿势Start方法原理解读Run方法原理解读常见问题原创 2024-05-04 18:45:31 · 1403 阅读 · 0 评论 -
并发-开启新线程
实现多线程的官方正确方法:2种实现Runnable接口方式的实现原理两种方法的对比匿名内部类实现线程的两种方式思考:同时用两种方法会怎么样总结:最精准的描述原创 2024-04-01 21:55:17 · 3035 阅读 · 0 评论 -
并发-多线程
并发-多线程,进程,线程,线程的串行,区别,多线程原创 2024-03-25 17:01:45 · 1608 阅读 · 0 评论 -
多线程-并发编程(7)-生产者消费者模式及非阻塞队列与阻塞队列实现
生产者消费者模式是一个十分经典的多线程协作模式弄懂生产者消费者问题能够让我们对多线程编程的理解更加深刻存在3个元素1.生产者(类比厨师)2.生产者的生产产品(类比美食)3.消费者(类比吃货)思路分析:理想情况:最开始,生产者先抢到cpu执行权;生产出生产产品并放在2者位置之间(类比餐桌)然后消费者抢到cpu执行权,消费掉生产产品如此反复循环生产者和消费者简单来说就是2个线程轮流执行而实际上线程是随机执行的下面介绍2个异常的情况:消费者等待过程:最开始,消费者先抢到cpu执行原创 2022-04-16 11:18:03 · 3232 阅读 · 55 评论 -
多线程-并发编程(6)-死锁
什么是死锁:两个或者多个线程永远阻塞,相互等待对方的锁是并发下一组互相竞争资源的线程因互相等待导致永久阻塞的现象例:解释:线程a占用对象锁1,线程b占用对象锁2线程a需要继续占用对象锁2才能往下执行,所以线程a需要等待线程b释放对象锁2线程b需要继续占用对象锁1才能往下执行,同样也需要线程a释放对象锁1由于这2个线程都不释放自己已经占用的锁,所以这2个线程会处于无限等待状态通俗意:神灯: “恭喜你捡到了我,我可以实现你三个愿望,请说出的你三个愿望”男孩: ..原创 2022-04-13 07:22:46 · 1343 阅读 · 91 评论 -
多线程-并发编程(5)-线程安全与同步附带实例注释
线程安全问题多个线程可能会共享(访问)同一个资源//比如访问同一个对象,同一个变量,同一个文件当多个线程访问同一块资源时,很容易引发数据错乱和数据安全问题,称为线程安全问题什么情况下会出现线程安全问题多个线程共享同一个资源且至少有一个线程正在执行写的操作实例:存钱取钱问题分别有存钱和取钱2个线程 存钱 取钱 线程1 余额 线程2 1000 《----1000------》 1000 1原创 2022-04-11 11:11:57 · 1192 阅读 · 95 评论 -
多线程-并发编程(4)-线程的状态及部分常用方法介绍
可以通过 Thread.getState 方法获得线程的状态(线程一共有 6 种状态)NEW(新建)new:尚未启动RUNNABLE(可运行状态)runnable:正在 JVM 中运行;或者正在等待操作系统的其他资源(比如处理器)//有些编程语言会把RUNNABLE分成2种情况//1.running//2.ready//以上2种在Java中都属于RUNNABLEBLOCKED(阻塞状态) blocked:正在等待监视器锁(内部锁)WAITING(等待状态) waiting:在等待原创 2022-04-08 15:36:04 · 1172 阅读 · 25 评论 -
多线程-并发编程(3)-多线程的内存布局
PC 寄存器(Program Counter Register):每一个线程都有自己的 PC 寄存器Java 虚拟机栈(Java Virtual Machine Stack):每一个线程都有自己的 Java 虚拟机栈理解:栈是先进后出;若不使每个线程都有各自的Java 虚拟机栈,那么在返回及排列上就有问题了,因为线程会抢进来执行产生冲突例:static void main1(){ test1();}static void test1(){}static void main2(){原创 2022-04-05 06:42:10 · 2619 阅读 · 59 评论