![](https://img-blog.csdnimg.cn/20201014180756926.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
并发编程
文章平均质量分 97
ns_salulu
这个作者很懒,什么都没留下…
展开
-
并发编程九-Callable/Future和CompletableFuture介绍
Callable和Future原创 2020-06-28 17:24:17 · 1349 阅读 · 0 评论 -
并发编程八-ForkJoin
ForkJoinPool该线程池中的线程如果空闲了的时候,会通过工作窃取去执行其他任务队列的等待任务,实现任务的高效处理。如果有一个任务可以拆分成多个小任务,提交到ForkJoinPool线程池去执行,那么可以让该任务更高效的被执行。1,需求:举个例子,比如现在要把从0到30亿这些数字求和,一般的做法就是使用个for循环来依次相加处理。但是如果用Fork/Join的方式来执行的话,就可以把求和操作拆分成多个小任务来执行,然后把每个小任务计算的结果相加,最终就可以得到求和的结果。2,代原创 2020-06-28 14:54:15 · 139 阅读 · 0 评论 -
并发编程七-并发相关的一些问题
1,锁的分类?锁的分类一般是依据锁的特性、锁的设计、锁的状态等进行分类的:公平锁/非公平锁:公平锁指多个线程按照申请锁的顺序来获取锁,非公平锁多个线程会争抢锁,谁抢到就给谁,所以能会造成优先级反转或者饥饿现象;synchronized 就是非公平锁,ReentrantLock 通过构造参数可以决定是非公平锁还是公平锁,默认构造是非公平锁; 独享锁/共享锁:独享锁是指该锁一次只能被一个线程持有,共享锁指该锁可以被多个线程持有;synchronized 和 ReentrantLock 都是独享锁...原创 2020-06-20 21:30:24 · 370 阅读 · 0 评论 -
并发编程六-并发工具包(JUC)
一,概述1,juc是什么?jdk提供了一些多线程同步相关的并发工具类,在java.util.concurrent包下,检查juc。2,juc有什么?juc提供了原子操作类、各种锁、线程安全的集合、线程安全的队列等工具类。3,有了synchronized可以同步代码,为什么还有有JUC?来个小示例,模拟业务需求:有三个步骤,每个步骤一个方法,每个方法使用一个线程来负责执行,并且这三个方法是有执行顺序:方法A由线程A来执行,方法B由线程B来执行,方法C由线程C来执行同时三个方法的原创 2020-06-17 15:45:15 · 612 阅读 · 0 评论 -
并发编程五(AQS)
目录一、假如让我们自己来实现AQS:1,使用自旋来实现2,使用自旋+队列+LockSupport.park()二,AQS介绍1,AQS的状态值和队列1.1状态值state1.2 队列三、AQS获取锁与释放锁1 无线程争抢时1.1 获取锁:reentrantLock.lock():1.2 释放锁:2有线程争抢锁时:2.1 获取锁(失败)--加入等待队列2.2 释放锁一、假如让我们自己来实现AQS:1,使用自旋来实现定义一个状态值state..原创 2020-06-15 15:38:17 · 251 阅读 · 0 评论 -
并发编程四-原子操作(比较并替换CAS操作)
Java中除了synchronized修饰的代码来保证原子性之外,还有其他方式可以用来保证原子性操作。其中CAS操作就保证了原子性,在JVM层解决并发访问的问题。原创 2020-06-15 15:37:47 · 892 阅读 · 0 评论 -
并发编程三(synchronized锁)
1,举个例子创建两个线程来给count变量的值做自增操作,每个线程加1000次我们期望得到count的值应该是2000public class SyncDemo { public static int count = 0; public static void main(String[] args) throws InterruptedException { // 创建两个线程来给count变量的值做自增操作,每个线程加1000次 // 我们预期原创 2020-06-15 15:36:39 · 158 阅读 · 0 评论 -
并发编程二(基础篇2)
一、线程池1,创建线程池可以通过ThreadPoolExecutor来创建一个线程池。 int corePoolSize = 0; int maximumPoolSize = 0; long keepAliveTime = 0; TimeUnit unit = null; BlockingQueue<Runnable> workQueue = null; ThreadFactory th.原创 2020-06-15 15:35:31 · 102 阅读 · 0 评论 -
并发编程一(基础篇)
1,创建并启动一个线程1.1 方式一:继承Thread类public class ThreadDemo { public static void main(String[] args) { SaLuluThread saLuluThread = new SaLuluThread(); saLuluThread.start();// 启动线程 }}/** * 继承Thread类,重写run方法 */class SaLuluThread e原创 2020-06-15 15:34:59 · 100 阅读 · 0 评论