转载自:—-》http://ifeve.com/java_lock_see/ Java锁的种类以及辨析锁作为并发共享数据,保证一致性的工具,在JAVA平台有多种实现(如 synchronized 和 Reen…
分类:java并发
链表的无锁操作 (JAVA)
看了下网上关于链表的无锁操作,写的不清楚,遂自己整理一部分,主要使用concurrent并发包的CAS操作。 1. 链表尾部插入 待插入的节点为:cur 尾节点:pred 基本插入方法: do{ pred = fin…
Java写一个简单的死锁程序
package deadlock; public class DeadlockSample { //必须有两个可以被加锁的对象才能产生死锁,只有一个不会产生死锁问题 private final Object obj1 =…
java的锁分类
主要分乐观锁和悲观锁。 悲观锁:悲观思想,认为写操作频繁,所以每次读写都会上锁。sycchronized就是悲观锁的一种实现,同时也是一种重量级锁。 乐观锁:乐观思想,认为读多写少(并发写的可能性低),所以不上锁。每次更…
JUC - ThreadPoolExecutor 源码分析
简介 ThreadPoolExecutor,Java线程池。使用线程池可以降低资源消耗,通过重复利用已创建的线程降低线程创建和销毁造成的消耗;可以提高响应速度,当任务到达时,任务可以不需要的等到线程创建就能立即执行;可以…
JUC学习 二
一、闭锁:java.util.concurrent.CountDownLatch 1、CountDownLatch是一个同步辅助类,在完成一组正在其他线程执行的操作之前,可以使一个、或多个线程处于等待状态。 2、闭锁可以…
Java并发编程-Semaphore
基于AQS的前世今生,来学习并发工具类Semaphore。本文将从Semaphore的应用场景、源码原理解析来学习这个并发工具类。 1、 应用场景 Semaphore用来控制同时访问某个特定资源的操作数量,或者同…
JAVA 并发编程-线程池(七)
线程池的作用: 线程池作用就是限制系统中运行线程的数量。 依据系统的环境情况。能够自己主动或手动设置线程数量,达到运行的最佳效果;少了…
Java-Lock超时锁和可中断锁原理
个人理解记录 超时锁的基本原理与独占锁基本相同,不同之处在于“超时”,在调用doAcquireNanos时,首先记录下调用方法的时间,然后尝试获取锁,如过获取成功则直接返回,如果获取失败,判断超时时间是否为0,如果是,则…
多线程面试(二):在Java多线程中如何避免死锁
问:什么是线程死锁? 答案很简单,当有两个或更多的线程在等待对方释放锁并无限期地卡住时,这种情况就称为死锁。 问:死锁产生的必要条件? (1) 互斥:一次只有一个进程可以使用一个资源。其他进程不能访问已分配…
JUC线程进阶篇05:同步锁Lock
JUC线程进阶篇05:同步锁Lock 标签: 多线程 JUC线程进阶篇05同步锁Lock 了解Lock Lock方法讲解 四种获取锁的方式 Lock和Synchronized的区别 场景卖票的线程安全问题 使用Reent…
Jdk1.6 JUC源码解析(24)-ConcurrentLinkedQueue
Jdk1.6 JUC源码解析(24)-ConcurrentLinkedQueue 作者:大飞 功能简介: ConcurrentLinkedQueue是一种基于单向链表实现的无界的线程安全队列。队列中的元素遵…