
并发
文章平均质量分 62
RobertTeacher
As long as you dare to be yourself, someone will fall in love with you.
展开
-
并发操作之——ThreadPoolExecutor核心参数
并发操作并发操作之——ThreadPoolExecutor核心参数。并发操作之——ThreadPoolExecutor核心参数并发操作一、ThreadPoolExecutor代码二、ThreadPoolExecutor核心参数1、corePoolSize2、maximumPoolSize3、keepAliveTime4、unit5、workQueue6、threadFactory7、handler总结一、ThreadPoolExecutor代码ThreadPoolExecutor代码:pub原创 2021-09-17 17:22:31 · 3383 阅读 · 0 评论 -
并发操作之——线程池遇到的坑
并发操作并发操作之——线程池遇到的坑.并发操作之——线程池遇到的坑并发操作一、线程池不允许使用 Executors 去创建,要通过 ThreadPoolExecutor的方式原因二、常见的线程池问题1、newFixedThreadPool和newSingleThreadExecutor:2、newScheduledThreadPool和newCachedThreadPool:总结一、线程池不允许使用 Executors 去创建,要通过 ThreadPoolExecutor的方式原因Execut原创 2021-09-17 16:03:12 · 3430 阅读 · 0 评论 -
并发操作之——并发编程实践
并发操作并发操作之——BlockingQueue.并发操作之——BlockingQueue并发操作一、编程里面解决生产消费者模型的几种方式1、wait() / notify()方法2、await() / signal()方法3、Semaphore信号量4、BlockingQueue阻塞队列二、synchronized和ReenTrantLock的使用场景1、synchronized2、ReenTrantLock总结一、编程里面解决生产消费者模型的几种方式核心:要保证生产者不会在缓冲区满时放入数原创 2021-09-17 15:35:54 · 3399 阅读 · 0 评论 -
并发操作之——ConcurrentLinkedQueue
并发操作并发操作之——ConcurrentLinkedQueue.并发操作之——ConcurrentLinkedQueue并发操作一、ConcurrentLinkedQueue二、ConcurrentQueue怎么实现线程安全的1、底层结构2、无锁操作3、for循环插入总结一、ConcurrentLinkedQueue非阻塞队列ConcurrentLinkedQueue是基于链表实现的无界线程安全队列,采用FIFO进行排序二、ConcurrentQueue怎么实现线程安全的保证线程安全的三原创 2021-09-17 15:04:18 · 3488 阅读 · 0 评论 -
并发操作之——BlockingQueue
并发操作并发操作之——BlockingQueue.并发操作之——BlockingQueue并发操作一、编程里面解决生产消费者模型的几种方式1、wait() / notify()方法2、await() / signal()方法3、Semaphore信号量4、BlockingQueue阻塞队列二、BlockingQueue和常见的阻塞队列BlockingQueue:1、ArrayBlockingQueue2、LinkedBlockingQueue3、PriorityBlockingQueue:4、Dela原创 2021-09-16 19:44:51 · 3657 阅读 · 0 评论 -
并发操作之——ReentrantReadWriteLock
并发操作并发操作之——ReentrantReadWriteLock.并发操作之——ReentrantReadWriteLock并发操作并发操作之——ReentrantReadWriteLock一、ReentrantReadWriteLock1、读写锁2、公平和非公平锁3、锁降级4、重入5、核心二、ReentrantReadWriteLock和ReenTrantLock的区别1、synchronized2、ReenTrantLock总结并发操作之——ReentrantReadWriteLock高原创 2021-09-16 17:02:56 · 3517 阅读 · 0 评论 -
并发操作之——ReenTrantLock和synchronized的区别
并发操作并发操作之——ReenTrantLock和synchronized的区别.并发操作之——ReenTrantLock和synchronized的区别并发操作Synchronized和ReenTrantLock的区别和使用场景一、synchronized和ReenTrantLock的区别?1、synchronized2、ReenTrantLock二、synchronized和ReenTrantLock的使用场景1、synchronized2、ReenTrantLock总结Synchroniz原创 2021-09-15 14:23:03 · 4396 阅读 · 0 评论 -
并发操作之——公平锁和非公平锁的区别以及ReenTrantLock源码
并发操作并发操作之——公平锁和非公平锁的区别并发操作之——公平锁和非公平锁的区别并发操作一、公平锁和非公平锁的区别二、ReenTrantLock源码总结一、公平锁和非公平锁的区别公平锁是先入先出原则,先申请的先加锁,轮流加锁非公平锁是每个线程都去抢锁,谁抢到锁,谁就加锁。二、ReenTrantLock源码非公平锁 static final class NonfairSync extends Sync { private static final long ser原创 2021-09-11 18:27:00 · 3734 阅读 · 0 评论 -
并发操作之——AQS
并发操作并发操作之——AQS并发操作之——AQS并发操作一、AQS1、AQS介绍2、acquire(int arg) 源码讲解,好比加锁lock操作二、AQS同步方式,实现同步器一般要覆盖哪个方法?总结一、AQS1、AQS介绍AQS的全称为(AbstractQueuedSynchronizer),这个类在java.util.concurrent.locks包下面。它是一个Java提高的底层同步工具类,比如CountDownLatch、ReentrantLock,Semaphore,Reent原创 2021-09-11 10:56:47 · 3700 阅读 · 0 评论 -
并发操作之——CAS
并发操作并发操作之——CAS并发操作之——CAS并发操作一、CAS二、CAS存在的问题1、CPU资源占用问题2、ABA问题一、CASCompare And Swap即比较再交换,是实现并发应用到的一种技术底层通过Unsafe类实现原子性操作操作包含三个操作数 —— 内存地址(V)、预期原值(A)和新值(B)。如果内存位置的值与预期原值相匹配,那么处理器会自动将该位置值更新为新值 ,若果在第一轮循环中,a线程获取地址里面的值被b线程修改了,那么a线程需要自旋,到下次循环才有可能机会执行。原创 2021-09-10 13:26:06 · 3852 阅读 · 0 评论 -
并发操作之——synchronized
并发操作并发操作之——synchronized并发操作之——synchronized并发操作一、sychronized1、方法加锁:2、代码块加锁:二、JDK1.6后的优化部分1、JVM对象在内存中的组成2、对象头模型一、sychronizedsynchronized是解决线程安全的问题,常用在 同步普通方法、静态方法、代码块 中非公平、可重入每个对象有一个锁和一个等待队列,锁只能被一个线程持有,其他需要锁的线程需要阻塞等待。锁被释放后,对象会从队列中取出一个并唤醒,唤醒哪个线程是原创 2021-09-08 16:03:38 · 4534 阅读 · 0 评论 -
并发操作之——手写单线程可重入锁实战
并发操作之——手写单线程可重入锁实战并发操作之——手写单线程可重入锁实战单线程不可重入锁代码实战单线程不可重入锁代码实战不可重入锁: 若当前线程执行某个方法已经获取了该锁,那么在方法中尝试再次获取锁时,就会获取不到被阻塞。package net.xdclass.xdclasssp.lock;/** * @author Cym * @date 2021/9/8 */public class ReentryLock { /** * 判断是否已经锁定 */原创 2021-09-08 10:29:36 · 4344 阅读 · 0 评论 -
并发操作之——手写单线程不可重入锁实战
并发操作之——手写单线程不可重入锁实战并发操作之——手写单线程不可重入锁实战单线程不可重入锁代码实战单线程不可重入锁代码实战不可重入锁: 若当前线程执行某个方法已经获取了该锁,那么在方法中尝试再次获取锁时,就会获取不到被阻塞。package net.xdclass.xdclasssp.lock;/** * @author Cym * @date 2021/9/7 * 不可重入锁 */public class UnReneeTrentLock { /** * 判原创 2021-09-07 21:21:41 · 4633 阅读 · 0 评论 -
并发操作之——手写多线程不可重入锁实战
并发操作之——手写多线程不可重入锁实战并发操作之——手写多线程不可重入锁实战多线程不可重入锁代码实战多线程不可重入锁代码实战不可重入锁: 若当前线程执行某个方法已经获取了该锁,那么在方法中尝试再次获取锁时,就会获取不到被阻塞。package net.xdclass.xdclasssp.lock;/** * @author Cym * @date 2021/9/7 * 不可重入锁 */public class UnReenTrantLock { /** * 判断原创 2021-09-07 21:11:28 · 4646 阅读 · 0 评论 -
并发操作之——手写死锁实战
并发操作并发操作之——手写死锁实战并发操作之——手写死锁实战并发操作一、死锁代码实战二、死锁的四个必要条件1、互斥条件2、请求与保持条件3、不可抢占4、循环等待条件三、死锁的解决办法,以及上面死锁的代码优化总结一、死锁代码实战死锁: 线程在获得了锁A并且没有释放的情况下去申请锁B,这时另一个线程已经获得了锁B,在释放锁B之前又要先获得锁A因此闭环发生,陷入死锁循环package net.xdclass.xdclasssp.lock;/** * @author Cym * @dat原创 2021-09-07 20:36:47 · 4931 阅读 · 0 评论 -
并发操作之——java多线程常用的锁
并发操作并发操作之——java多线程常用的锁并发操作之——java多线程常用的锁并发操作前言一、共享锁二、互斥锁三、死锁1、偏向锁2、轻量锁3、重量级锁总结前言并发操作之——java多线程常用的锁。一、共享锁也叫S锁/读锁,能查看但无法修改和删除的一种数据锁,加锁后其它用户可以并发读取、查询数据,但不能修改,增加,删除数据,该锁可被多个线程所持有,用于资源数据共享二、互斥锁也叫X锁/排它锁/写锁/独占锁/独享锁/ 该锁每一次只能被一个线程所持有,加锁后任何线程试图再次加锁的线程会被原创 2021-09-07 19:49:56 · 5727 阅读 · 0 评论 -
并发操作之——java中常用的锁
并发操作并发操作之——java中常用的锁。并发操作之——java中常用的锁并发操作前言一、悲观锁二、乐观锁三、公平锁四、非公平锁五、可重入锁六、不可重入锁七、自旋锁总结前言并发操作之——java中常用的锁。一、悲观锁线程去操作数据的时候,总认为别的线程会去修改数据,所以它每次拿数据的时候都会上锁,别的线程去拿数据的时候就会阻塞,比如synchronized。二、乐观锁每次去拿数据的时候都认为别人不会修改,更新的时候会判断是别人是否回去更新数据,通过版本来判断,如果数据被修改了就拒绝更原创 2021-09-07 19:05:12 · 4893 阅读 · 0 评论 -
并发操作之——进程和线程间的调度算法下——线程之间的调度算法
并发操作并发操作之——进程和线程间的调度算法下——线程之间的调度算法并发操作之——进程和线程间的调度算法下——线程之间的调度算法并发操作前言一、协同式线程调度二、抢占式线程调度总结前言<font color=#999AAA 并发操作之——进程和线程间的调度算法。一、协同式线程调度线程执行时间由线程本身来控制,线程把自己的工作执行完后,要主动通知系统切换到另外一个线程上.优点: 实现简单,且切换操作对线程自己是可知的没有线程同步的问题.缺点: 线程执行时间不可控制,如果有一个线程原创 2021-09-07 16:17:39 · 4944 阅读 · 0 评论 -
并发操作之——进程和线程间的调度算法上——进程之间的调度算法
并发操作并发操作之——进程和线程间的调度算法.并发操作之——进程和线程间的调度算法并发操作前言一、先来先服务调度算法二、短作业优先调度算法三、高响应比优先调度算法四、时间片轮询算法五、优先级调度算法总结前言并发操作之——进程和线程间的调度算法。一、先来先服务调度算法遵循队列的先进先出原则,先进来的就先计算缺点: 短任务如果排在长任务后面,那么短任务就会被等待很久才会被执行.二、短作业优先调度算法短作业在实际工作中占据很大比例,让短作业优先执行.缺点: 对长作业不友好三、高响原创 2021-09-07 15:40:39 · 4998 阅读 · 0 评论 -
并发操作之——并发编程三要素
并发操作并发操作之——并发编程三要素。并发操作之——并发编程三要素并发操作前言一、原子性二、有序性:三、可见性:总结前言并发操作之——并发编程三要素。一、原子性一个不可再被分割的颗粒,原子性指的是一个或多个操作要么全部执行成功要么全部执行失败,期间不能被中断,也不存在上下文切换,线程切换会带来原子性的问题int num = 1; // 原子操作num++; // 非原子操作,从主内存读取num到线程工作内存,进行 +1,再把num写到主内存, 除非用原子类,即java.util.原创 2021-09-04 10:48:47 · 8778 阅读 · 0 评论 -
并发操作之——多线程业务场景以及volatile关键字、指令重排、先行原则
并发操作并发操作之——多线程业务场景并发操作之——多线程业务场景并发操作前言一、多线程的业务场景有哪些?1、异步任务:2、定时任务:3、分布式计算:4、服务器编程:二、怎么理解volatile关键字以及volatile关键字和synchronized的区别?volatile:volatile和synchronized的区别为什么会出现脏读?三、指令重排解决办法:解释:四、先行原则八大原则总结前言并发操作之——多线程业务场景。一、多线程的业务场景有哪些?1、异步任务:用户注册、记录日志原创 2021-09-01 16:05:49 · 7056 阅读 · 0 评论 -
并发操作之——JAVA线程常见几种状态以及相互之间的转化关系
并发操作并发操作之——JAVA线程常见几种状态及解释并发操作之——JAVA线程常见几种状态及解释并发操作前言一、JAVA线程有几种常见状态,分别是什么意思?创建(NEW):就绪(Runnable):运行(Running)阻塞(Blocked)等待阻塞:同步阻塞:等待(WAITING):超时等待(TIMED_WAITING):死亡(TERMINATED):前言并发操作之——JAVA线程常见几种状态及解释。一、JAVA线程有几种常见状态,分别是什么意思?JDK的线程状态分6种,JVM里面9种原创 2021-09-01 09:37:12 · 6660 阅读 · 0 评论 -
并发操作之——多线程实现的几种方式
并发操作并发操作之——多线程并发操作之——多线程并发操作前言一、实现多线程有几种方式?1、继承Thread类优点:缺点:2、实现Runnabel接口二、1、通过Callable和FutureTask方式优点:缺点:2、通过线程池创建优点:缺点:总结前言并发操作之——多线程。一、实现多线程有几种方式?1、继承Thread类示例代码:/** * @author Cym * @date 2021/8/30 */public class Thread extends java.lan原创 2021-08-30 17:20:05 · 7540 阅读 · 0 评论 -
并发操作之——并发、并行
并发操作并发操作之——并发、并行并发操作之——并发、并行并发操作前言一、什么是并发?什么是并行?并发:并行:二、并发和并行举例总结前言并发操作之——并发、并行。一、什么是并发?什么是并行?并发:一台处理器上同时处理任务, 这个同时实际上是交替处理多个任务,程序中可以同时拥有两个或者多个线程,当有多个线程在操作时,如果系统只有一个CPU,则它根本不可能真正同时进行一个以上的线程,它只能把CPU运行时间划分成若干个时间段,再将时间段分配给各个线程执行。并行:多个CPU上同时处理多个任务原创 2021-08-30 15:39:50 · 8807 阅读 · 0 评论 -
并发操作之——进程、线程、协程
并发操作并发操作——进程、线程、协程进程、线程、协程并发操作前言一、进程、线程、协程分别是什么意思?进程:线程:协程:二、进程、线程、协程三者之间的关系以及图示1.进程、线程、协程三者之间的关系2.进程、线程、协程三者之间的关系示意图三、协程对于多线程有什么优缺点吗优点:缺点:总结前言并发操作——进程、线程、协程。一、进程、线程、协程分别是什么意思?进程:本质上是一个独立执行的程序,进程是操作系统进行资源分配和调度的基本概念,操作系统进行资源分配和调度的一个独立单位线程:是操作原创 2021-08-30 14:16:09 · 6709 阅读 · 0 评论