
java并发编程
文章平均质量分 85
将并发编程中经常遇到的坑总结起来。
橙不甜橘不酸
这个作者很懒,什么都没留下…
展开
-
Java并发编程之线程池的使用
文章目录概述为什么需要使用池线程池的好处线程池的使用如何创建线程池?1、通过ThreadPoolExecutor的构造方法实现2、通过Executors工具类创建线程池(1) Executors.newSingleThreadExecutor()(2) Executors.newFixedThreadPool()(3) Executors.newCachedThreadPool()ThreadPoolExecutor 构造参数和执行过程从源码角度简单分析线程池工作原理拒绝策略如何设置线程池的大小CPU密集型原创 2021-09-04 13:44:42 · 887 阅读 · 0 评论 -
单例模式详解
文章目录单例模式介绍实现方式1)饿汉式2)懒汉式(线程不安全)3)DCL懒汉式(线程安全)(1)两层判断的作用?(2)为什么singleton的定义要加上volatile关键字?(3)DCL懒汉式一定能保证单例吗?4)静态内部类克隆与序列化破坏单例5)枚举单例模式的拓展(多例)总结参考单例模式单例模式(Singleton Pattern)是 Java 中23种设计模式之一。这种模式涉及到一个单一的类,该类负责创建自己的对象,同时确保只有单个对象被创建。这个类提供了一种访问其唯一的对象的方式,可以直接访问原创 2021-09-03 10:58:59 · 584 阅读 · 1 评论 -
Java启动线程为什么只能用start()而不能用run()
我们知道启动一个线程使用的是Thread类的start()方法,但start()方法最后仍然会自动调用run()方法,那为什么不直接使用run()方法呢?错误样例先看下面这个例子:public class test { public static void main(String[] args) throws InterruptedException { Thread thread=new Thread(()->{ System.out.print原创 2021-09-03 16:32:29 · 1030 阅读 · 0 评论 -
三种线程安全的List
在单线程开发环境中,我们经常使用ArrayList作容器来存储我们的数据,但它不是线程安全的,在多线程环境中使用它可能会出现意想不到的结果。多线程中的ArrayList:我们可以从一段代码了解并发环境下使用ArrayList的情况:public class ConcurrentArrayList { public static void main(String[] args) throws InterruptedException { List<Integer> l原创 2021-05-30 14:24:00 · 98894 阅读 · 10 评论 -
java并发编程中锁的对象有哪几种?
我们都知道在并发编程学习中锁的概念和使用是必须要学会的,那这个锁到底锁住的是什么呢?它又是如何保证线程之间的并发?参考:Java中Synchronized的用法(简单介绍)锁的分类java中的锁分为对象锁和类锁一个类可以有多个对象,所以一个类可以有多个对象锁一个类只有一个class,所有一个类只能有一个类锁锁的机制(以synchronized为例)修饰一个代码块时,该代码块称为同步代码块,同一时刻只能有一个线程进入该同步代码块,锁住的是包含这个代码块的对象。修饰一个普通方法时,该方法称原创 2021-05-30 10:09:38 · 1766 阅读 · 0 评论 -
对Thread.join的简单理解
1. join简介join()方法是Thread类中的一个方法,该方法的定义是等待该线程终止。其实就是join()方法将挂起调用线程的执行,直到被调用的对象完成它的执行。这句话讲的很抽象,简单来说就是父线程等待子线程结束后才能继续运行。2. join示例先来看一下这段简单的代码:public class test { public static void main(String[] args) throws InterruptedException { Thread thr原创 2021-05-29 19:08:46 · 975 阅读 · 0 评论 -
什么是虚假唤醒?为什么会产生虚假唤醒?
最近B站学习狂神的JUC并发编程时,听到了虚假唤醒这个词,虽然狂神进行了代码的演示,但我还是不太理解为什么使用if判断包装wait方法会出现虚假唤醒,查找了网上很多大佬的博客终于理解了,这里分享一下虚假唤醒产生的原因。什么是虚假唤醒?当一定的条件触发时会唤醒很多在阻塞态的线程,但只有部分的线程唤醒是有用的,其余线程的唤醒是多余的。比如说卖货,如果本来没有货物,突然进了一件货物,这时所有的顾客都被通知了,但是只能一个人买,所以其他人都是无用的通知。虚假唤醒演示public class test {原创 2021-05-28 21:56:20 · 10868 阅读 · 21 评论