![](https://img-blog.csdnimg.cn/20190918140158853.png?x-oss-process=image/resize,m_fixed,h_224,w_224)
Java多线程
文章平均质量分 95
Java多线程
斜月&三星
这个作者很懒,什么都没留下…
展开
-
对锁的理解和手动模拟死锁
1. 死锁死锁是指两个线程同时占用两个资源,又在彼此等待对方释放锁资源,如下图所示:演示代码如下:import java.util.concurrent.TimeUnit;public class LockExample { public static void main(String[] args) { &nb原创 2020-05-11 21:43:21 · 175 阅读 · 0 评论 -
AQS 源码解析
AbstractQueuedSynchronizer是Java并发包java.util.concurrent的核心基础组件,是实现Lock的基础。1. AQS类结构属性// 属性private transient volatile Node head;// 同步队列头节点private transient volatile Node tail;// 同步队列尾节点priv...原创 2020-02-17 20:21:18 · 197 阅读 · 0 评论 -
AQS 详解
AQS的全称AbstractQueuedSynchronizer,抽象队列同步器。这个类在 java.util.concurrent.locks 包下面。AQS 是一个用来构建锁和同步器的框架,使用AQS能简单且高效地构造出应用广泛的大量的同步器,比如我们提到的ReentrantLock,Semaphore,其他的诸如 ReentrantReadWriteLock,Synchron...原创 2020-02-16 10:19:53 · 484 阅读 · 0 评论 -
Java中创建线程的四种方式
1. 继承Thread类通过继承 Thread 类来创建线程的一般步骤如下:1. 定义一个 Thread 类的子类,重写 run() 方法,将相关逻辑实现,run() 方法就是线程要执行的业务逻辑方法;2. 创建自定义的线程子类对象;3. 调用子类实例的 start() 方法来启动线程。代码示例:public class MyThread extends Thread{...原创 2019-11-12 08:55:20 · 112 阅读 · 0 评论 -
Synchronized 详解
一、Synchronized 的基本使用Synchronized 的作用主要有三个:确保线程互斥的访问同步代码 保证共享变量的修改能够及时可见 有效解决重排序问题从语法上讲,Synchronized 总共有三种用法:修饰实例方法,作用于当前对象实例加锁,进入同步代码前要获得当前对象实例的锁。 修饰静态方法,作用于当前类对象加锁,进入同步代码前要获得当前类对象的锁。也就是给当前...原创 2020-02-11 10:41:16 · 2015 阅读 · 0 评论 -
ThreadLocal 相关知识点
1.ThreadLocal 是什么? ThreadLocal 是一个本地线程副本变量工具类。主要用于将私有线程和该线程存放的副本对象做一个映射,各个线程之间的变量互不干扰,在高并发场景下,可以实现无状态的调用,适用于各个线程不共享变量值的操作。2. ThreadLocal 工作原理是什么? TreadLocal 原理:每个线程的内部都维护了一个 Thread...原创 2020-02-09 10:38:31 · 186 阅读 · 0 评论 -
ReentrantLock 详解
一、初始ReentrantLock ReentrantLock 位于java.util.concurrent.locks包下,它实现了Lock接口和Serializable接口。ReentrantLock 是一把可重入锁和互斥锁,它具有与 synchronized 关键字相同的含有隐式监视器锁(monitor)的基本行为和语义,但是它比 synchronized 具有...原创 2020-01-08 09:28:17 · 428 阅读 · 0 评论 -
Java中的锁
公平锁公平锁是指多个线程按照申请锁的顺序来获取锁。非公平锁 非公平锁是指多个线程获取锁的顺序并不是按照申请锁的顺序,有可能后申请的线程比先申请的线程优先获取锁。有可能,会造成优先级反转或者饥饿现象。 对于Java ReentrantLock而言,通过构造函数指定该锁是否是公平锁,默认是非公平锁。非公平锁的优点在于吞吐量比公平锁大。对于Synchronized...原创 2020-01-02 14:53:21 · 159 阅读 · 0 评论 -
Java 并发中的锁优化和线程池优化
Java内部锁优化 当使用 Java 多线程访问共享资源的时候,会出现竞态的现象。即随着时间的变化,多线程“写”共享资源的最终结果会有所不同。为了解决这个问题,让多线程“写”资源的时候有先后顺序,引入了锁的概念。每次一个线程只能持有一个锁进行写操作,其他的线程等待该线程释放锁以后才能进行后续操作。从这个角度来看,锁的使用在 Java 多线程编程中是相当重要的,那么是如何对锁进行...原创 2020-01-02 14:27:17 · 346 阅读 · 0 评论 -
线程池
1.线程池的定义 管理一组工作线程。通过线程池复用线程有以下几点优点: 减少资源创建 => 减少内存开销,创建线程占用内存。 降低系统开销 => 创建线程需要时间,会延迟处理的请求。 提高稳定稳定性 => 避免无限创建线程引起的OutOfMemoryError【简称OOM】。 2.Executors创建线程池的方式 根据返回...原创 2019-12-06 08:47:01 · 286 阅读 · 0 评论 -
Java多线程基础知识
本文来源:51CTO技术栈线程与竞态 开发的应用程序会在一个进程中运行,换句话说进程就是程序的运行实例。运行一个 Java 程序的实质就是运行了一个 Java 虚拟机进程。如果说一个进程可以包括多个线程,并且这些线程会共享进程中的资源。任何一段代码会运行在一个线程中,也运行在多个线程中。线程所要完成的计算被称为任务。 为了提高程序的效率,我们会生成多个任务一起...原创 2020-01-02 09:33:01 · 107 阅读 · 0 评论