
Java多线程
文章平均质量分 91
Java多线程相关
wyplj_sir
只是总结。
展开
-
悲观锁(Synchronized)和乐观锁(CAS)
文章目录悲观锁和乐观锁SynchronizedSynchronized使用Synchronized底层原理Java1.6对Synchronized的优化synchronized的等待唤醒机制CASCAS使用CAS底层原理CAS的缺陷1.ABA问题2.循环开销过大3.只能保证一个共享变量的原子操作concurrent包的实现悲观锁和乐观锁悲观锁:总是假设最坏的情况,每次去拿数据的时候都认为别人...原创 2020-04-29 13:43:35 · 2784 阅读 · 0 评论 -
多线程(7)线程池(参数解析以及源码解析)
为什么使用线程池?构建一个新的线程是有一定代价的,因为涉及与操作系统的交互。如果程序中创建了大量的生命期很短的线程,应该使用线程池。一个线程池中包含许多准备运行的空闲线程。将Runnable对象交给线程池,就会有一个线程调用run方法。当run方法退出时,线程不会死亡,而是在池中准备为下一个请求提供服务。另一个使用线程池的理由是减少并发线程的数目。创建大量线程会大大降低性能甚至使虚拟机崩溃。如...原创 2020-04-17 21:17:45 · 313 阅读 · 0 评论 -
多线程(6)同步器
目录一、同步器二、信号量三、倒计时门栓四、障栅五、交换器六、同步队列一、同步器java.util.concurrent包包含了几个能帮助人们管理相互合作的线程集的类,见表14-3。这些机制具有为线程之间的共用集节点模式(common rendezvous patterns)提供的“预置功能”(canned functionality)。如果有一个相互合作的线...原创 2019-06-08 16:07:01 · 748 阅读 · 0 评论 -
多线程(5)Callable与Future,执行器
目录一、Callable与Future1、Callable2、Future3、FutureTask二、执行器1、执行器2、线程池3、预定执行4、控制任务组5、Fork-Join框架一、Callable与Future1、CallableRunnable封装一个异步运行的任务,可以把它想像成为一个没有参数和返回值的异步方法。Callable与...原创 2019-06-03 14:51:32 · 279 阅读 · 0 评论 -
多线程(4)线程安全的集合
目录一、线程安全的集合二、高效的映射、集合和队列1、ConcurrentHashMap2、ConcurrentSkipListMap三、写数组的拷贝四、旧的线程安全的集合一、线程安全的集合如果多线程要并发地修改一个数据结构,例如散列表,那么很容易会破坏这个数据结构。例如,一个线程可能要开始向表中插入一个新元素。假定在调整散列表各个桶之间的链接关系的过程中,被剥夺了控...原创 2019-06-02 14:20:20 · 1216 阅读 · 0 评论 -
多线程(3)阻塞队列
目录一、什么是阻塞队列二、阻塞队列的分类三、常见的BlockingQueue四、例子一、什么是阻塞队列对于许多线程问题,可以通过使用一个或多个队列以优雅且安全的方式将其形式化。生产者线程向队列插入元素,消费者线程则取出它们。使用队列,可以安全地从一个线程向另一个线程传递数据(不需要考虑同步)。阻塞队列(Blocking Queue)和非阻塞队列的区别:当试图向队列...原创 2019-06-01 19:31:27 · 236 阅读 · 0 评论 -
多线程(2)同步(ReentrantLock,Synchronized,Volatile,死锁)
目录一、竞争条件二、锁1、锁对象2、条件对象三、synchronized关键字1、监视器概念2、同步方法3、同步块(synchronized block)四、Volatile域1、volatile关键字2、final变量3、原子性五、死锁及如何应对1、死锁2、线程局部变量(避免共享变量)3、锁测试与超时4、读/写锁5、为...原创 2019-04-22 15:36:50 · 428 阅读 · 0 评论 -
多线程(1)简单介绍
目录一、什么是线程二、线程状态三、中断线程四、线程属性说明:这一系列博客内容摘自《Java核心技术 卷I》一、什么是线程线程和进程的区别联系,如何实现多线程:https://blog.youkuaiyun.com/wyplj2015/article/details/78592659二、线程状态线程有6种状态:(Thread.State)New(新创建) ...原创 2019-04-21 15:09:28 · 115 阅读 · 0 评论 -
java多线程实现
一、线程与进程进程是具有一定独立功能的程序关于某个数据集合上的一次运行活动,进程是系统进行资源分配和调度的一个独立单位。线程是进程的一个实体,是CPU调度和分派的基本单位,它是比进程更小的能独立运行的基本单位。线程自己基本上不拥有系统资源,只拥有一点在运行中必不可少的资源(如程序计数器,一组寄存器和栈),但是它可与同属一个进程的其他的线程共享进程所拥有的全部资源。每个独立的线程有一...原创 2017-11-21 16:02:57 · 217 阅读 · 0 评论 -
volatile关键字
volatilevolatile是Java中一种比sychronized关键字更轻量级的较弱的同步机制。与sychronized相比,在访问volatile变量时不会执行加锁操作,因此也就不会使执行线程阻塞。volatile 变量所需的编码较少,并且运行时开销也较少。volatile变量具有的特性:1、可见性:使用volatile可以保证某一个线程对变量的更新对于其他所有线程是可...原创 2017-11-20 18:21:06 · 2640 阅读 · 0 评论