![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
文章平均质量分 80
春风霓裳
加油(ง •̀_•́)ง
展开
-
Java 19新特性:虚拟线程+Structured Concurrency (结构化并发编程)
多线程原创 2022-11-23 22:17:44 · 454 阅读 · 0 评论 -
线程池的7大参数
参考:https://blog.csdn.net/ye17186/article/details/89467919https://www.cnblogs.com/dafanjoy/p/9729358.html直接调用Executors的简单方法创建的4大线程池参考:https://blog.csdn.net/qq_43470725/article/details/121624476自定义线程池:使用创建ThreadPoolExecutor类,并添加参数创建线程池最全的构造函数:其中还有其他的构造函原创 2022-02-19 10:38:08 · 1502 阅读 · 0 评论 -
java定时任务
1、Thread.sleep()package com.example.dtest.timetest.threadtimetest;public class ThreadTimeTest { public static void main(String[] args) { System.out.println("5秒定时"); try { Thread.sleep(5*1000); } catch (Interrupt原创 2022-01-11 10:20:46 · 296 阅读 · 0 评论 -
java多线程编程--各种锁--独享锁 VS 共享锁
参考:https://tech.meituan.com/2018/11/15/java-lock.htmlhttps://www.cnblogs.com/jyroy/p/11365935.html独享锁和共享锁同样是一种概念。我们先介绍一下具体的概念,然后通过ReentrantLock和ReentrantReadWriteLock的源码来介绍独享锁和共享锁。独享锁也叫排他锁,是指该锁一次只能被一个线程所持有。如果线程T对数据A加上排它锁后,则其他线程不能再对A加任何类型的锁。获得排它锁的线程即能读数据原创 2021-12-06 15:01:55 · 248 阅读 · 0 评论 -
java多线程编程--各种锁--可重入锁 VS 非可重入锁
参考:https://tech.meituan.com/2018/11/15/java-lock.htmlhttps://www.cnblogs.com/jyroy/p/11365935.html**可重入锁又名递归锁,是指在同一个线程在外层方法获取锁的时候,再进入该线程的内层方法会自动获取锁(前提锁对象得是同一个对象或者class),不会因为之前已经获取过还没释放而阻塞。**Java中ReentrantLock和synchronized都是可重入锁,可重入锁的一个优点是可一定程度避免死锁。下面用示例代原创 2021-12-06 11:51:17 · 153 阅读 · 0 评论 -
java多线程编程--各种锁--公平锁 VS 非公平锁
参考:https://tech.meituan.com/2018/11/15/java-lock.htmlhttps://www.cnblogs.com/jyroy/p/11365935.html公平锁是指多个线程按照申请锁的顺序来获取锁,线程直接进入队列中排队,队列中的第一个线程才能获得锁。公平锁的优点是等待锁的线程不会饿死。缺点是整体吞吐效率相对非公平锁要低,等待队列中除第一个线程以外的所有线程都会阻塞,CPU唤醒阻塞线程的开销比非公平锁大。**非公平锁是多个线程加锁时直接尝试获取锁,获取不到才原创 2021-12-06 11:31:00 · 472 阅读 · 0 评论 -
java多线程编程--各种锁-- 无锁 VS 偏向锁 VS 轻量级锁 VS 重量级锁
参考:https://tech.meituan.com/2018/11/15/java-lock.htmlhttps://www.cnblogs.com/jyroy/p/11365935.html参考这四种锁是指锁的状态,专门针对synchronized的。在介绍这四种锁状态之前还需要介绍一些额外的知识。首先为什么Synchronized能实现线程同步?在回答这个问题之前我们需要了解两个重要的概念:“Java对象头”、“Monitor”。Java对象头synchronized是悲观锁,在操作同原创 2021-12-06 11:14:28 · 207 阅读 · 0 评论 -
java多线程编程--各种锁-- 自旋锁 VS 适应性自旋锁
参考:https://tech.meituan.com/2018/11/15/java-lock.htmlhttps://www.cnblogs.com/jyroy/p/11365935.html在介绍自旋锁前,我们需要介绍一些前提知识来帮助大家明白自旋锁的概念。阻塞或唤醒一个Java线程需要操作系统切换CPU状态来完成,这种状态转换需要耗费处理器时间。如果同步代码块中的内容过于简单,状态转换消耗的时间有可能比用户代码执行的时间还要长。在许多场景中,同步资源的锁定时间很短,为了这一小段时间去切换线程原创 2021-12-06 10:55:49 · 198 阅读 · 0 评论 -
java多线程编程--各种锁-- 乐观锁 VS 悲观锁
参考:https://tech.meituan.com/2018/11/15/java-lock.htmlhttps://www.cnblogs.com/jyroy/p/11365935.html原创 2021-12-03 17:25:02 · 639 阅读 · 0 评论 -
java多线程编程--Exchanger----交换器
参考:https://blog.csdn.net/qq_43470725/article/details/120457461https://blog.csdn.net/octopusflying/article/details/80634864java.util.concurrent包中的Exchanger类可用于两个线程之间交换信息。可简单地将Exchanger对象理解为一个包含两个格子的容器,通过exchanger方法可以向两个格子中填充信息。当两个格子中的均被填充时,该对象会自动将两个格子的信息交原创 2021-12-03 15:37:49 · 140 阅读 · 0 评论 -
java多线程编程--Phaser----阶段
参考:https://blog.csdn.net/qq_43470725/article/details/120457461https://blog.csdn.net/liuyu973971883/article/details/107917079基本使用在CyclicBarrier、CountDownLatch中,我们使用计数器来控制程序的顺序执行,同样的在Phaser中也是通过计数器来控制。在Phaser中计数器叫做parties, 我们可以通过Phaser的构造函数或者register()方法来原创 2021-12-03 10:46:36 · 644 阅读 · 0 评论 -
java多线程编程--Semaphore----信号灯
Semaphore----信号灯Semaphore翻译成字面意思为 信号量,Semaphore可以控同时访问的线程个数,通过 acquire() 获取一个许可,如果没有就等待,而 release() 释放一个许可。2个构造器:public Semaphore(int permits) {//参数permits表示许可数目,即同时可以允许多少线程进行访问sync = new NonfairSync(permits); }public Semaphore(int permits, boole原创 2021-12-02 15:30:55 · 403 阅读 · 0 评论 -
java多线程编程--CyclicBarrier和CountDownLatch的区别
CyclicBarrier和CountDownLatch区别:CyclicBarrier没有可以专门计数的计数器,只有通过awai()方法计算被阻塞的线程数是否到达!案例CountDownLatchpackage com.example.dtest.threadTest.use.countDownDifferCyclicBarrier;import java.util.concurrent.CountDownLatch;public class CountDownLatchTest {原创 2021-12-02 14:26:57 · 222 阅读 · 0 评论 -
java多线程编程--CyclicBarrier
参考:https://blog.csdn.net/qq_43470725/article/details/120457461https://blog.csdn.net/tolcf/article/details/50925145CyclicBarrier字面意思回环栅栏,通过它可以实现让一组线程等待至某个状态之后再全部同时执行。叫做回环是因为当所有等待线程都被释放以后,CyclicBarrier可以被重用。我们暂且把这个状态就叫做barrier,当调用await()方法之后,线程就处于barrier了原创 2021-12-02 11:52:46 · 422 阅读 · 0 评论 -
java多线程编程--CountDownLatch
参考:https://www.cnblogs.com/dolphin0520/p/3920397.htmlCountDownLatch用法CountDownLatch类位于java.util.concurrent包下,利用它可以实现类似计数器的功能。比如有一个任务A,它要等待其他4个任务执行完毕之后才能执行,此时就可以利用CountDownLatch来实现这种功能了。CountDownLatch方法然后下面这3个方法是CountDownLatch类中最重要的方法:public void awai原创 2021-12-01 16:25:04 · 155 阅读 · 0 评论 -
java多线程编程--多线程debug
改变debug的默认配置:将ALL改为Thread然后要在两个线程的代码里面打上断点然后debug:在这里选择debug的线程原创 2021-12-01 10:43:21 · 941 阅读 · 0 评论 -
java多线程编程--线程生命周期
参考:https://blog.csdn.net/qq_43470725/article/details/1204574611、线程生命周期图解2、方法:wait(), notify(), notifyAll()等方法介绍:1.wait()的作用是让当前线程进入等待状态,同时,wait()也会让当前线程释放它所持有的锁。“直到其他线程调用此对象的 notify() 方法或 notifyAll() 方法”,当前线程被唤醒(进入“就绪状态”)2.notify()和notifyAll()的作用原创 2021-12-01 10:19:14 · 253 阅读 · 0 评论 -
java多线程编程--线程池
参考:https://blog.csdn.net/qq_27581243/article/details/86650682https://www.cnblogs.com/zincredible/p/10984459.html线程池的创建Java里面线程池的顶级接口是Executor,但是严格意义上讲Executor并不是一个线程池,而只是一个执行线程的工具。真正的线程池接口是ExecutorService。要配置一个线程池是比较复杂的,尤其是对于线程池的原理不是很清楚的情况下,很有可能配置的线程池不是原创 2021-11-30 09:10:01 · 329 阅读 · 0 评论 -
java多线程编程--Lock
参考:https://www.cnblogs.com/dolphin0520/p/3923167.html一、synchronized的缺点synchronized是java中的一个关键字,也就是说是Java语言内置的特性。那么为什么会出现Lock呢?在上面一篇文章中,我们了解到如果一个代码块被synchronized修饰了,当一个线程获取了对应的锁,并执行该代码块时,其他线程便只能一直等待,等待获取锁的线程释放锁,而这里获取锁的线程释放锁只会有两种情况:1)获取锁的线程执行完了该代码块,然后线程释原创 2021-11-26 17:42:07 · 133 阅读 · 0 评论 -
java多线程编程--Runnable和Thread的区别
参考:https://blog.csdn.net/zhaojianting/article/details/97664370原创 2021-11-25 17:18:48 · 548 阅读 · 2 评论 -
synchronized 关键字之锁的升级(偏向锁->轻量级锁->重量级锁)
参考:https://blog.csdn.net/lengxiao1993/article/details/81568130https://blog.csdn.net/sinat_41832255/article/details/89309944synchronized 关键字之锁的升级–偏向锁原创 2021-11-25 10:50:44 · 407 阅读 · 0 评论 -
java多线程编程--synchronized
synchronized锁锁的是啥?永远都是对象原创 2021-11-24 11:52:18 · 432 阅读 · 0 评论 -
java多线程编程--原子性、可见性、有序性
多线程编程要注意的三个方面:原子性;可见性;有序性;要理解这三个性质,我们需要先了解jvm:参考:jvm原创 2021-11-23 14:26:42 · 772 阅读 · 0 评论 -
多线程编程(Atomic、LongAdder 、CountDownLatch、CyclicBarrier、Phaser、ReadWriteLock、Semaphore、Exchanger等)
参考:https://www.cnblogs.com/dolphin0520/p/3920397.htmlhttps://blog.csdn.net/weixin_48052161/article/details/119901209?spm=1001.2014.3001.5501原创 2021-09-24 16:11:48 · 354 阅读 · 0 评论