转自:http://blog.csdn.net/rongyongfeikai2/article/details/41311193 记得以前设计评审时,想用SQLite数据库实现某个功能,被教导说应该用Postgresql…
分类:java并发
JUC之AQS框架
一、简介 1. AQS AQS是AbstractQueuedSynchronizer的简写,中文名应该叫抽象队列同步器(我给的名字,哈哈),出生于Java 1.5。 Provides a framework for im…
学习笔记 08 --- JUC线程池
学习笔记 08 — JUC线程池 线程池的优点: 1)避免线程的创建和销毁带来的性能开销。 2)避免大量的线程间因互相抢占系统资源导致的阻塞现象。 3}能够对线程进行简单的管理并提供定时执行、间隔执行等功能。…
java中synchronize锁 volatile thread.join()方法的使用
对于并发工作,你永远不知道一个线程何时运行,你需要某种方式来避免两个任务访问相同的资源,即要避免资源竞争,至少在关键代码上不能出现这样的情况,否则多个线程同时对某个内存区域操作会导致数据破坏。 程序代码中的临界区是需要互…
java基础回顾(四)——锁机制
关键字Synchronized 1、对于同步的方法或者代码块来说,必须获得对象锁才能够进入同步方法或者代码块进行操作; 2、如果采用method级别的同步,则对象锁即为method所在的实例对象,如果是静态方法,对象锁即…
Java死锁问题简析
前言 在多线程编程中死锁是一个常见的问题,我们都知道死锁的出现有四个必要条件:资源互斥使用,也就是说每个资源一次只能有一个线程使用;占有并请求,所有的线程都持有它们目前请求到的资源并且申请还未得到的资源;不可剥夺,也就是…
Java多线程/并发10、不可重入锁/自旋锁、可重入锁
锁分为可重入锁和不可重入锁。 可重入和不可重入的概念是这样的:当一个线程获得了当前实例的锁,并进入方法A,这个线程在没有释放这把锁的时候,能否再次进入方法A呢? 可重入锁:可以再次进入方法A,就是说在释放锁前此线程可以再…
Java并发编程:重入锁(ReentranceLock )、读写锁(ReadWriteLock)代码实现
重入锁: 同一时刻只能有一条线程拥有重入锁,但此线程可以重复获得锁。 其余需求获得此锁的线程被阻塞。 代码实现关键是记录当前获得锁的线程。 public class ReentranceLock { //记录当前获得锁的…
Java并发编程的艺术(十二)——线程安全
1. 什么是『线程安全』? 如果一个对象构造完成后,调用者无需额外的操作,就可以在多线程环境下随意地使用,并且不发生错误,那么这个对象就是线程安全的。 2. 线程安全的几种程度 线程安全性的前提:对『线程安全性』的讨论必…
面试官的七种武器:Java篇
起源 自己经历过的面试也不少了,互联网的、外企的,都有。总结一下这些面试的经验,发现面试官问的问题其实不外乎几个大类,玩不出太多新鲜玩意的。细细想来,面试官拥有以下七种武器。恰似古龙先生笔下的武侠世界中的七种武器。下面我…
java并发编程基础(五)-新类库JUC包的构件
java并发编程基础(五)-类库JUC包的构件 本博文为学习《thinking in java》一书中第21章“并发”时的小笔记,并使用这些构件结合简单的小场景写一些样例代码,这是由于原书上的代码太长了 CountDow…
JUC LinkedBlockingQueue 分析
基本介绍 JUC里面提供的有界阻塞队列,基于链表方式实现 默认队列大小为Integer.MAX_VALUE,给人的感觉是近乎无界,在构造的时候可以自行指定队列的容量 内部维护两把锁(putLock与takeLock),用…