![](https://img-blog.csdnimg.cn/20201014180756923.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
高并发
文章平均质量分 67
Cocowwy.
Good good study Day day up
展开
-
如何在多线程异步的情况下保证事务?
如何在多线程异步的情况下保证事务?原创 2022-08-25 22:30:00 · 4942 阅读 · 3 评论 -
两个例子讲清Thread的setDaemon的作用
本篇会用两个例子讲清楚setDaemon的作用你只需要记住这几个点:⚡️ 当你新建一个线程的时候,daemon值默认为false⚡️ 当没有daemon值为false的线程存活的时候,JVM会退出,这个线程也会⚡️ daemon为false的时候,称之为用户线程,为true的时候,称之为守护线程例子1,守护线程的何时终止?作用?: public static void main(String[] args) throws InterruptedException { Thr原创 2022-02-18 23:43:57 · 1308 阅读 · 0 评论 -
volatile关键字简述
假如你去面试的时候,面试官问你,请谈谈你对volatile的理解?大家看完这篇博客相信就能从容回答了。volatile是java虚拟机提供的轻量级的同步机制volatile的三个特性:保证可见性不保证原子性禁止指令重排那么这三种特性都是什么意思呢?...原创 2020-09-15 23:53:19 · 465 阅读 · 1 评论 -
JAVA高并发(JUC)之ThreadPool线程池api及工作原理简析
这次讲解的是JUC的线程池,对于ThreadPool,我们可以理解为已经为我们创建了一堆线程,然后再让这些线程去做我们指定的事情。首先先看看继承图:Executors创建线程的三种方法:ExecutorService threadPool = Executors.newFixedThreadPool(5); //固定容量ExecutorService threadPool = Executors.newSingleThreadExecutor(); //单例的、单个线程的线程池Executor原创 2020-06-01 20:47:22 · 14829 阅读 · 4 评论 -
JUC高并发(JUC)之BlockingQueue 阻塞队列
这次讲解的是BlockingQueue:BlockingQueue(阻塞队列)是什么?当队列为空时,从队列中获取元素将阻塞。当队列为满时,从队列中添加元素将阻塞。因为是队列,所以我们理应想到先进先出。接下来我们来演示简单的使用一下:add(抛出异常):/** * @author Cocowwy * @create 2020-05-05-14:53 */public class BlockingQueueDemo { public static void main(String[原创 2020-05-23 15:46:17 · 593 阅读 · 0 评论 -
JAVA高并发(JUC)之ReadWriteLock(读写锁)
这次讲解的数JUC的ReadWriteLock(读写锁):多个线程同时读一个资源类没有任何问题,所以为了满足并发量,读取共享资源应该可以同时进行。 但是,如果有一个线程想去共享资源类,就不应该再有其他线程可以对该资源进行读或写。总结:读读共存 读写不共存 写写不共存接下来先看个案例:代码如下:public class ReadWriteLockDemo { public static void main(String[] args) { MyCache myCach原创 2020-05-20 22:46:06 · 662 阅读 · 0 评论 -
JAVA高并发(JUC)创建线程的第三种方式之Callable接口
我们自然知道创建线程的三种方式,前两种就不多说了,这次我们讲的是第三种Callable接口。首先,先对比一下Runnable接口和Callable接口的区别://Runnable接口class MyThreadRunnable implements Runnable { @Override public void run() { }}//Callableclass MyThreadCallable implements Callable<Integ原创 2020-05-13 22:11:13 · 551 阅读 · 0 评论 -
JAVA高并发(JUC)多线程8锁讲解
先了解一个概念:synchronized 锁的是这个方法所在的资源类,就是这个对象,也就是同一时间段不可能有两个线程同时进到这个资源类,同一时间段,只允许有一个线程访问资源类里面的其中一个synchronized 方法!T1:1.标准访问,请问先打印邮件还是短信?代码如下:public class Lock8 { public static void main(String[] args) { Phone phone = new Phone(); new Thr原创 2020-05-11 11:22:02 · 681 阅读 · 0 评论 -
JAVA高并发(JUC)之生产者消费者
这次我们讲解的是一个例题:题目:两个线程操作一个变量,实现两个线程对同一个资源一个进行加1操作,另外一个进行减1操作,且需要交替实现,变量的初始值为0。即两个线程对同一个资源进行加一减一交替操作。话不多说,开干首先我们先定义操作的资源,并且定义方法。//资源类class Resource { private int number = 0; public synchronized void up() throws InterruptedException { //1原创 2020-05-09 12:12:52 · 786 阅读 · 2 评论 -
JAVA高并发(JUC)之集合不安全
首先是我们的ArrayList:这次我们讲解的是集合的不安全,首先我们都知道ArrayList吧!首先我们拓展几个知识点,ArrayList底层是Object类型的数组,初始容量是10(jdk7之前,jdk8之后是空引用,到add之后会变成10,类似于懒加载的机制),其扩容的方式是每次扩容为之前的一半,比如10会扩容成15,15扩容成22,扩容用到的方法时Arrays的copyof方法,OK,...原创 2020-05-06 23:17:09 · 1305 阅读 · 0 评论