根据锁的添加到Java中的时间,Java中的锁,可以分为"同步锁"和"JUC包中的锁"。 同步锁 即通过synchronized关键字来进行同步,实现对竞争资源的互斥访问的锁。Java 1.0版本中就已经支持同步锁了。 同步锁的原理是,对于每一个对象,有且仅有一个同步锁;不同的线程能共同访问该同步锁 ...
分类:
编程语言 时间:
2018-03-12 21:19:07
阅读次数:
233
一、前言 JUC这部分还有线程池这一块没有分析,需要抓紧时间分析,下面开始ThreadPoolExecutor,其是线程池的基础,分析完了这个类会简化之后的分析,线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定和管理资源(包 ...
分类:
编程语言 时间:
2018-03-11 23:09:47
阅读次数:
205
13. 线程池 第四种获取线程的方法:线程池,一个 ExecutorService,它使用可能的几个池线程之一执行每个提交的任务,通常使用 Executors 工厂方法配置。 线程池可以解决两个不同问题:由于减少了每个任务调用的开销,它们通常可以在执行大量异步任务时提供增强的性能,并且还可以提供绑定 ...
分类:
编程语言 时间:
2018-03-05 23:34:40
阅读次数:
217
8. 生产者消费者案例-虚假唤醒 参考下面生产者消费者案例: 当多个生产者、消费者同时响应资源时,程序输出如下(商品数出现负数): 原因如下,即产生了虚假唤醒: 解决方法在jdk的wait()方法里已经声明,即需要把wait()方法放在循环里(生产者方法也同下) 9. Condition 线程通信 ...
分类:
编程语言 时间:
2018-03-04 18:10:01
阅读次数:
188
5. CountDownLatch 闭锁 Java 5.0 在 java.util.concurrent 包中提供了多种并发容器类来改进同步容器的性能。 CountDownLatch 一个同步辅助类,在完成一组正在其他线程中执行的操作之前,它允许一个或多个线程一直等待。 闭锁可以延迟线程的进度直到其 ...
分类:
编程语言 时间:
2018-03-04 18:06:20
阅读次数:
209
1. volatile 关键字与内存可见性 内存可见性(Memory Visibility)是指当某个线程正在使用对象状态而另一个线程在同时修改该状态,需要确保当一个线程修改了对象状态后,其他线程能够看到发生的状态变化。 可见性错误是指当读操作与写操作在不同的线程中执行时,我们无法确保执行读操作的线 ...
分类:
编程语言 时间:
2018-03-04 00:26:27
阅读次数:
222
简介 CountDownLatch,是一个同步器,允许一个或多个线程等待,直到一组操作在其他线程中完成。 概述 初始CountDownLatch时,会给定count,await方法会阻塞,直到count减小到0,countDown方法会是count减1,count不能被重置。 应用 例一 描述 有1 ...
分类:
其他好文 时间:
2018-03-03 16:54:11
阅读次数:
163
概述 常用的多线程实现方式有2种: 1. 继承Thread类 2. 实现Runnable接口 之所以说是常用的,是因为通过还可以通过JUC(java.util.concurrent)包中的线程池来实现多线程。关于线程池的内容,我们以后会详细介绍;现在,先对的Thread和Runnable进行了解。 ...
分类:
编程语言 时间:
2018-03-02 20:45:43
阅读次数:
189
ConcurrentLinkedQueue是一个基于链表结点的无界线程安全队列。 ...
分类:
其他好文 时间:
2018-02-25 17:27:15
阅读次数:
168
概要 AtomicInteger, AtomicLong和AtomicBoolean这3个基本类型的原子类的原理和用法相似。本章以AtomicLong对基本类型的原子类进行介绍。内容包括:AtomicLong介绍和函数列表AtomicLong源码分析(基于JDK1.7.0_40)AtomicLong ...
分类:
编程语言 时间:
2018-01-04 18:14:03
阅读次数:
193