3 JDK并发包】的更多相关文章

一,JDK并发包实际上就是指java.util.concurrent包里面的那些类和接口等 主要分为以下几类: 1,原子量:2,并发集合:3,同步器:4,可重入锁:5,线程池 二,原子量 原子变量主要有AtomicInteger,AtomicLong,AtomicBoolean等, 主要实现原理都是底层实现类CAS 即比较并交换,都有get,set,compareAndSet等方法,如++,--等也都是有自带方法实现 这些都是线程安全的,保证了多线程访问时候的可见性 import java.ut…
JDK并发包之同步控制 一.重入锁 重入锁使用java.util.concurrent.locks.ReentrantLock来实现.示例代码如下: public class TryReentrantLock implements Runnable{ static ReentrantLock lock=new ReentrantLock(); static int i=0; @Override public void run() { for(int j=0;j<10000;j++){ lock.…
Java多线程--JDK并发包(2) 线程池 在使用线程池后,创建线程变成了从线程池里获得空闲线程,关闭线程变成了将线程归坏给线程池. JDK有一套Executor框架,大概包括Executor.ExecutorService.AbstractExeccutorService.ThreadPoolExecutor.Executors等成员,位于java.util.concurrent包下.它们之间的关系如下: Executor是顶层的接口,ExecutorService接口继承了它,Abstrc…
Java多线程--JDK并发包(1) 之前介绍了synchronized关键字,它决定了额一个线程是否可以进入临界区:还有Object类的wait()和notify()方法,起到线程等待和唤醒作用.synchronized关键字经常和它们一起使用,因为wait和notify在调用之前需要获得"锁",而锁时依靠synchronized获得的. 同步机制 重入锁 下面是一个使用ReentrantLock的简单例子.可以看到,和synchronized相比,必须手动调用unlock()方法释…
JDK内部提供了大量实用的API和框架.本章主要介绍这些JDK内部功能,主要分为3大部分: 首先,介绍有关同步控制的工具,之前介绍的synchronized就是一种同步控制手段,将介绍更加丰富的多线程控制方法. 其次,将详细介绍JDK对线程池的支持,使用线程池,将很大程度提高线程调度的性能. 第三,介绍JDK的一些并发容器.这些容器专为并行访问所设计,绝对是高效.安全.稳定的实用工具. 多线程团队协作:同步控制 之前提到的synchronized是最简单的同步控制的方法.本节中,首先介绍sync…
3.2 线程复用:线程池 一种最为简单的线程创建和回收的方法类似如下代码: new Thread(new Runnable() { @Override public void run() { // do sth. } }).start(); 在run方法结束后,自动回收. 在真实的生产环境中,系统由于真实环境的需要,可能会开启很多线程来支撑其应用.而当线程数量过大时,反而会耗尽CPU和内存资源. 3.2.1 什么是线程池 为了避免系统频繁地创建和销毁线程,我们可以让创建的线程进行复用. 在使用线…
JDK并发包二 线程复用--线程池 在线程池中,总有那么几个活跃的线程,当程序需要线程时可以从池子中随便拿一个控线程,当程序执行完毕,线程不关闭,而是将这个线程退会到池子,等待使用. JDK提供了一套Executor框架,可以有效进行线程控制.ThreadPoolExecutor表示一个线程池,Executors类相当与线程池工厂,通过Executors可以获得一个拥有特定功能的线程池. Executors框架提供了各类线程池,主要有下面工厂方法 public static ExecutorSe…
JDK并发包一 同步控制是并发程序必不可少的重要手段,synchronized是一种最简单的控制方法.但JDK提供了更加强大的方法----重入锁 重入锁 重入锁使用java.util.concurrent.locks.ReentrantLock类来实现. ReentrantLock有几个重要的方法 lock()获得锁,如果锁已占用,则等待. lockInterruptibly()获得锁,优先响应中断. tryLock() 尝试获得锁若成功返回true 失败返回false 不等待立即返回 tryL…
3.3 不要重复发明轮子:JDK的并发容器 3.3.1 超好用的工具类:并发集合简介 JDK提供的这些容器大部分在java.util.concurrent包中. ConcurrentHashMap:这是一个高效的并发HashMap.可以理解为一个线程安全的HashMap. CopyOnWriteArrayList:这是一个List,从名字看就是和ArrayList是一族的.在读多写少的场合,这个List的性能非常好,远远好于Vector. ConcurrentLinkedQueue:高效的并发队…
转载地址:http://blog.csdn.net/yangbutao/article/details/8479520 1.java 高并发包所采用的几个机制(CAS,volatile,抽象队列同步) CAS(乐观操作),jdk5以前采用synchronized,对共享区域进行同步操作,synchronized是重的操作,在高并发情况下,会引起线程频繁切换:而CAS是一种乐观锁机制,compare and swap,不加锁,而是假设没有冲突去完成,若有冲突会重试(非阻塞).compare&swa…