随笔分类 - Java-并发
摘要:第一节 阻塞队列 1.1 初识阻塞队列 队列以一种先进先出(FIFO)的方式管理数据,阻塞队列(BlockingQueue)是一个支持两个附加操作的队列,这两个附加的操作是 在队列为空时,获取元素的线程会等待队列变为非空; 当队列满时,存储元素的线程会等待队列可用。 生产者-消费者模式: 阻塞队列常
阅读全文
摘要:同步容器、并发容器 在Java并发编程中,经常听到同步容器、并发容器之说,那什么是同步容器与并发容器呢? 同步容器 同步容器可以简单地理解为通过synchronized来实现同步的容器,比如Vector、Hashtable以及SynchronizedList等,如果有多个线程调用同步容器的方法,它们
阅读全文
摘要:One of the best additions in java 5 was Atomic operations supported in classes such as AtomicInteger, AtomicLong etc. These classes internally rely on
阅读全文
摘要:一、序言 当我们需要使用线程的时候,我们可以新建一个线程,然后显式调用线程的start()方法,这样实现起来非常简便,但在某些场景下存在缺陷:如果需要同时执行多个任务(即并发的线程数量很多),频繁地创建线程会降低系统的效率,因为创建和销毁线程均需要一定的时间。 线程池可以使线程得到复用,所谓线程复用
阅读全文
摘要:多线程 Simultaneous Multithreading,简称SMT。 并行 并行性(parallelism)指两个或两个以上的事件在同一时刻发生,在多道程序环境下,并行性使多个程序同一时刻可在不同CPU上同时执行。 并发 并发的实质是一个物理CPU(也可以多个物理CPU) 在若干道程序之间多
阅读全文
摘要:一、初识Lock Lock是一个接口,提供了无条件的、可轮询的、定时的、可中断的锁获取操作,所有加锁和解锁的方法都是显式的,其包路径是:java.util.concurrent.locks.Lock,其核心方法是lock()、unlock()、tryLock(),实现类有ReentrantLock、
阅读全文
摘要:要使任务和线程能安全可靠地停止,并不是一件很容易的事情,java没有提供任何机制来安全地终止线程,那么我们该怎么办呢? 下面我们先来了解一下java中的中断机制: Java 中的线程中断是 一种线程间的协作机制。 也就是说在某个线程中对另一个线程调用interrupt()方法并不能直接终止该线程,需
阅读全文
摘要:初识Callable and Future 在编码时,我们可以通过继承Thread或是实现Runnable接口来创建线程,但是这两种方式都存在一个缺陷:在执行完任务之后无法获取执行结果。如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到目的。 Java5提供了Callable和Fu
阅读全文