![](https://img-blog.csdnimg.cn/20201014180756738.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java多线程
文章平均质量分 92
Java多线程
澄白易
追风赶月莫停留,平芜尽处是春山。
展开
-
Java多线程(九):JUC包下的常见类
目录前言1.ReentrantLock2.Semaphore3.CountDownLatch4.CyclicBarrier前言java.util.concurrent 下的类就叫 JUC 类,JUC 下典型的类有:ReentrantLock :可重入锁; Semaphore :信号量; CountDownLatch :计数器; CyclicBarrier :循环屏障。1.ReentrantLock可重入互斥锁. 和 synchron...原创 2022-04-30 18:19:37 · 1767 阅读 · 25 评论 -
Java多线程(八):常见的锁策略
目录1. 乐观锁&悲观锁1.1 乐观锁1.1.1 乐观锁定义1.1.2 乐观锁实现(CAS)1.1.3 CAS应用:AtomicInteger:1.1.4 CAS缺点(ABA问题)1.2 悲观锁1.2.1 悲观锁定义1.2.2 悲观锁应用2.公平锁&非公平锁3. 读写锁3.1 读写锁的定义3.2 读写锁示例3.3 独占锁3.4共享锁4.可重入锁5. 自旋锁&挂起等待锁1. 乐观锁&悲观锁...原创 2022-04-28 21:54:45 · 1903 阅读 · 73 评论 -
Java多线程(七):单例模式详解
目录1. 什么是单例模式2. 单例模式的特点3. 单例模式的实现3.1 单例模式实现步骤3.2 单例模式实现方式3.2.1 饿汉方式3.2.2 懒汉方式1. 什么是单例模式java中单例模式是一种常见的设计模式,单例模式确保某个类只有一个实例,而且自行实例化并向整个系统提供这个实例。在计算机系统中,线程池、缓存、日志对象、对话框、打印机、显卡的驱动程序对象常被设计成单例。这些应用都或多或少具有资源管理器的功能。每台计算机可以有若干个打印机,但只能有一个...原创 2022-04-27 21:16:35 · 1911 阅读 · 12 评论 -
Java多线程(六):线程池详解
目录1. 什么是线程池2. 为什么要使用线程池3. 线程池创建3.1固定数量的线程池(Executors.newFixedThreadPool)3.1.1 创建固定数量的线程池3.1.2线程池返回结果3.1.3 submit() VS execut()3.2.4 线程工厂3.2带缓存的线程池(Executors.newCachedThreadPool)3.3执行定时任务(Executors.newSingleThreadExecutor)3.3.1 延迟...原创 2022-04-26 23:10:02 · 5576 阅读 · 104 评论 -
Java多线程(五):线程之间的通讯
目录1. 线程通讯1.1 方法介绍1.1.1 wait() 使用1.1.2 notify 使用1.1.3notiyAll 使用1.1.4 注意事项2. wait() VS wait(long timeout)3. wait VS sleep3.1wait(0) 与 sleep(0) 的区别3.2 wait 和 sleep 释放锁3.3wait和sleep区别(相同点&不同点)4.线程休眠和指定唤醒:LockSupport4.1 park...原创 2022-04-23 23:00:05 · 2304 阅读 · 43 评论 -
Java多线程(四):什么是死锁以及如何解决死锁
1. 什么是死锁 死锁 是指两个或两个以上的进程在执行过程中,由于竞争资源或者由于彼此通信而造成的一种阻塞的现象,若无外力作用,它们都将无法推进下去。也就是两个线程拥有锁的情况下,又在尝试获取对方的锁,从而造成程序一直阻塞的情况。死锁代码演示:public class DeadLock { public static void main(String[] args) { Object lockA = new Object(); Obj...原创 2022-04-21 18:53:39 · 3182 阅读 · 18 评论 -
Java多线程(三):线程安全问题与解决方法
1. 什么是线程安全问题如果多线程环境下代码运行的结果是符合我们预期的,即在单线程环境应该的结果,则说这个程序是线程安全的。线程不安全指的是程序在多线程的执行结果不符合预期。2. 导致线程不安全的因素2.1 抢占式执行2.2 多个线程同时修改了同一个变量public class ThreadDemo16 { static class Counter { // 变量 private int number = 0; ...原创 2022-04-20 19:14:25 · 1802 阅读 · 19 评论 -
Java多线程(二):线程的常用方法和状态
1.线程常用方法1.1 线程终止李四⼀旦进到工作状态,他就会按照行动指南上的步骤去进行工作,不完成是不会结束的。但有时我们需要增加⼀些机制,例如老板突然来电话了,说转账的对⽅是个骗子,需要赶紧停止转账,那张三该如何通知李四停止呢?这就涉及到我们的停止线程的方式了。目前常见的有以下两种方式:通过 自定义标记符 来进行中断。 调用interrupt() 方法来中断。1.1.1 自定义标记符 // 1.先声明一个标识符 private volatile static b..原创 2022-04-19 17:21:18 · 1322 阅读 · 10 评论 -
Java多线程(一):线程的创建方式和常见构造方法以及常用属性
1. 认识线程1.1 什么是线程一个线程就是一个 "执行流". 每个线程之间都可以按照顺讯执行自己的代码. 多个线程之间 "同时" 执行着多份代码。还是回到我们之前的银行的例子中。之前我们主要描述的是个人业务,即一个人完全处理自己的业务。我们进一步设想如下场景:一家公司要去银行办理业务,既要进行财务转账,又要进行福利发放,还得进行缴社保。如果只有张三一个会计就会忙不过来,耗费的时间特别长。为了让业务更快的办理好,张三又找来两位同事李四、王五一起来帮助他,三个人分别负责...原创 2022-04-18 18:30:30 · 1020 阅读 · 2 评论