![](https://img-blog.csdnimg.cn/20201014180756913.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
多线程
加油妹妹
写的博客如果云里雾里,还有什么意义
展开
-
谈谈Java中的volatile
谈谈Java中的volatile 内存可见性 留意复合类操作 解决num++操作的原子性问题 禁止指令重排序 总结 内存可见性 volatile是Java提供的一种轻量级的同步机制,在并发编程中,它也扮演着比较重要的角色。同synchronized相比(synchronized通常称为重量级锁),volatile更轻量级,相比使用synchronized所带来的庞大开销,倘若能恰...转载 2018-08-08 16:31:38 · 191 阅读 · 0 评论 -
JAVA线程同步方法和同步代码块
JAVA 线程同步方法和同步代码块 线程安全和非线程安全 脏读 非线程安全:多个线程对同一个对象的中的实例变量进行并发访问,产生后果就是脏读,也就是获取的数据被更改。 非线程安全问题存在与“实例变量”中,如果是方法内部的私有变量,就不存在“非线程安全问题”。 线程安全:获得实例变量的值是经过同步处理的,不会出现脏读现象。 结论:只有共享资源才需要被同步,如果不是共享资源,则没有必要同步...原创 2018-08-08 16:35:58 · 3165 阅读 · 0 评论 -
线程间的通信
所谓线程间的通信,无非就是线程之间相互协作,互相影响,数据交互。 1、不使用wait和notify 两个线程在不使用wait 和 notify的前提下,也能通过sleep和while来实现相互影响。两个线程对同一个变量做操作,并循环监控这个变量。 2、wait()和notify() Wait() 方法wait() 的作用是使当前执行代码的线程进程等待,wait()是Ob...原创 2018-08-15 17:55:18 · 117 阅读 · 0 评论 -
Java 浅析 Thread.join()
概要 本文分为三部分对 Thread.join() 进行分析: 1. join() 的示例和作用 2. join() 源码分析 3. 对网上其他分析 join() 的文章提出疑问 1. join() 的示例和作用 1.1 示例 1 // 父线程 2 public class Parent extends Thread { 3 public void run() { 4...转载 2019-01-18 16:32:09 · 134 阅读 · 0 评论 -
Java并发编程:深入剖析ThreadLocal
Java并发编程:深入剖析ThreadLocal 想必很多朋友对ThreadLocal并不陌生,今天我们就来一起探讨下ThreadLocal的使用方法和实现原理。首先,本文先谈一下对ThreadLocal的理解,然后根据ThreadLocal类的源码分析了其实现原理和使用需要注意的地方,最后给出了两个应用场景。 以下是本文目录大纲: 一.对ThreadLocal的理解 二....转载 2018-08-28 19:42:17 · 111 阅读 · 0 评论 -
Java并发编程:Lock
也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下面进行阐述。本文先从synchronized的缺陷讲起,然后再讲述java.util.concurrent.locks包下常用的有哪些类和接口,最后讨论以下一些关于锁的概念方面的东西 以下是本文目录大纲: 一.synchronized的缺陷 二.java.uti...转载 2018-08-30 20:02:46 · 91 阅读 · 0 评论 -
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore
Java并发编程:CountDownLatch、CyclicBarrier和Semaphore 目录 Java并发编程:CountDownLatch、CyclicBarrier和Semaphore 一.CountDownLatch用法 二.CyclicBarrier用法 三.Semaphore用法 在java 1.5中,提供了一些非常有用的辅助类来帮助我们进行并发编程,比如Co...转载 2019-07-21 22:16:29 · 182 阅读 · 0 评论 -
AQS结构及原理分析和Reentrant非公平锁
AQS介绍 AQS,即AbstractQueuedSynchronizer, 队列同步器,它是Java并发用来构建锁和其他同步组件的基础框架。来看下同步组件对AQS的使用: AQS是一个抽象类,主是是以继承的方式使用。AQS本身是没有实现任何同步接口的,它仅仅只是定义了同步状态的获取和释放的方法来供自定义的同步组件的使用。从图中可以看出,在java的同步组件中,AQS的子类(Sync等)一般是...转载 2019-07-22 15:26:56 · 338 阅读 · 0 评论 -
关于AQS的思考
关于AQS的思考 1概述 在java中,常常使用synchronized实现并发访问,但是ReentrantLock是基于AQS实现的,AQS仅仅是一个工具类,没有使用更底层的机器指令,不是关键字,也不依靠 JDK 编译时的特殊处理,仅仅作为一个普通的类就完成了代码块的并发访问控制。 在介绍AQS之前,先讲讲CLH锁,引用网上的定义,CLH锁是一种基于链表的可扩展、高性能、公平的自旋锁,申请...原创 2019-08-30 14:23:00 · 294 阅读 · 0 评论