
java多线程并发
文章平均质量分 90
井底的笨鸟
Stay hungry,stay foolish.
展开
-
volatile域、atomic原子性、final实例域、ThreadLocal线程局部变量
有时,仅仅为了读写一个或两个实例域就使用同步,显得开销过大了。 多处理器的计算机能够暂时在该处理器内部的寄存器中保存内存中的值。结果是,运行在不同处理器上的线程可能在同一个内存位置取到不同的值。 volatile关键字为实例域的同步提供了一种免锁机制,如果声明一个域为volatile,那么编译器和虚拟机就知道该域可能被另一个线程并发更新。 例如原创 2016-07-06 15:14:23 · 677 阅读 · 0 评论 -
java多线程总结
java中的多线程在java中要想实现多线程,有两种手段,一种是继续Thread类,另外一种是实现Runable接口。对于直接继承Thread的类来说,代码大致框架是:123456789101112class 类名 extends Thread{方法1;方法2;…public voi转载 2016-06-29 16:51:53 · 4603 阅读 · 0 评论 -
同步——synchronized机制、Lock和Conditon机制和关于线程中断
Java在java SE 5.0引入了不同与synchronized的另一种加锁方式,java.util.concurrent.Locks包中的两个锁类:ReetrantLock类,为可重入锁。还有读写锁ReentrantReadWriteLock. 很多线程从一个数据结构读取数据而很少修改其中的数据,那么允许对读者线程共享访问是合适的,但是写者线程依然必须是互斥访问的。原创 2016-07-06 15:45:19 · 4445 阅读 · 0 评论 -
生产者消费者模型——blocking queue和CountDownLaunch
BlockingQueue接口定义了一种阻塞的FIFO queue,每一个BlockingQueue都有一个容量,让容量满时往BlockingQueue中添加数据时会造成阻塞,当容量为空时取元素操作会阻塞。 ArrayBlockingQueue和LinkedBlockingQueueArrayBlockingQueue是一个由数组支持的有界阻塞队列。在读写操作上都需要锁转载 2016-07-28 17:28:54 · 2910 阅读 · 0 评论 -
ConcurrentHashMap原理分析
Java集合---ConcurrentHashMap原理分析 集合是编程中最常用的数据结构。而谈到并发,几乎总是离不开集合这类高级数据结构的支持。比如两个线程需要同时访问一个中间临界区(Queue),比如常会用缓存作为外部文件的副本(HashMap)。这篇文章主要分析jdk1.5的3种并发集合类型(concurrent,copyonright,queue)中的Concurr转载 2016-09-09 16:09:08 · 332 阅读 · 0 评论 -
Executor(执行器)框架和Future框架
Future框架Future接口定义了对线程执行计算结果的获取或取消线程执行该任务等操作。两个重要的功能:1.获取结果。2.可取消性。Future 表示异步计算的结果。它提供了检查计算是否完成的方法,以等待计算的完成,并获取计算的结果。计算完成后只能使用 get 方法来获取结果,如有必要,计算完成前可以阻塞此方法。取消则由cancel 方法来执行。还提供了其他方法,以确转载 2016-07-29 13:55:46 · 3977 阅读 · 0 评论