多线程 并发
文章平均质量分 75
隔壁阿布都
这个作者很懒,什么都没留下…
展开
-
快速理解 synchronized关键字修饰静态方法、普通方法和代码块
Class A { //对当前对象加锁 public synchronized methodA() {} //对当前对象加锁,与methodA用法相同 public methodB() { synchronized(this){} } //对类加锁,即对所有此类的对象加锁 public static synchronized methodC() {} //对类加锁,即对所有此类的对象加锁 publ...原创 2021-04-06 15:48:55 · 290 阅读 · 0 评论 -
java 中Synchronized 和 Lock 的区别
1、synchronized和lock的用法区别synchronized:在需要同步的对象中加入此控制,synchronized可以加在方法上,也可以加在特定代码块中,括号中表示需要锁的对象。lock:一般使用ReentrantLock类做为锁。在加锁和解锁处需要通过lock()和unlock()显示指出。所以一般会在finally块中写unlock()以防死锁。2、synchronized和lock性能区别synchronized是托管给JVM执行的,而lock是java写的控制锁的代码.原创 2021-04-01 13:59:28 · 4065 阅读 · 0 评论 -
五分钟解决Java线程池 面试所有问题
一、为什么要用线程池 降低资源消耗。通过重复利用已创建的线程降低线程创建、销毁线程造成的消耗。 提高响应速度。当任务到达时,任务可以不需要等到线程创建就能立即执行。 提高线程的可管理性。线程是稀缺资源,如果无限制的创建,不仅会消耗系统资源,还会降低系统的稳定性,使用线程池可以进行统一的分配、调优和监控二、ThreadPoolExecutor线程池类七大参数详解参数 说明 corePoolSize 核心线程数量,线程池维护线程的最少数量 maximumPoolS原创 2021-03-31 18:43:48 · 563 阅读 · 0 评论 -
线程池的shutdown()与shutdownNow()方法的区别
老习惯先上结论:shutdown只是将线程池的状态设置为SHUTWDOWN状态,正在执行的任务会继续执行下去,没有被执行的则中断。而shutdownNow则是将线程池的状态设置为STOP,正在执行的任务则被停止,没被执行任务的则返回。分析源码在源码层面上,shutdown调用的是advanceRunState(SHUTDOWN),而shutdownNow调用的是(STOP) shutdown调用的事中断空闲的Workers,而shutdownNow调用的是中断所有的Workers .原创 2021-03-31 17:01:08 · 4636 阅读 · 1 评论 -
Synchronized实现原理
一.同步的基本思想目的:为了保证共享数据在同一时刻只被一个线程使用,我们有一种很简单的实现思想,就是1.在共享数据里保存一个锁 ,当没有线程访问时,锁是空的。2.当有第一个线程访问时,就 在锁里保存这个线程的标识 并允许这个线程访问共享数据。3.在当前线程释放共享数据之前,如果再有其他线程想要访问共享数据,就要 等待锁释放 。Jvm同步的实现jvm中有以下三种锁(由上到下越来越“重量级”):偏向锁轻量级锁重量级锁重量级锁二.Synchronized 原理JVM规范转载 2021-03-25 16:33:57 · 316 阅读 · 0 评论 -
Java并发工具类介绍
概述在JDK的并发包(java.util.concurrent)中,为我们提供了几个非常重要的并发工具类,分别为CountDownLatch、CyclicBarrier、Semaphore和Exchanger。先上总结1、CountDownLatch,它是一种计数器的方式保证线程同步;它不去控制多个子线程之间的前后关系,只保证某一线程能够在这些子线程执行完成后再执行。2、CyclicBarrier,通过设置屏障的方式使得多线程同步,能够控制多个线程在屏障处等等其他线程也执行到屏障点,可以实现原创 2021-02-25 11:38:05 · 474 阅读 · 1 评论