Java并发编程
文章平均质量分 96
瞧德
你好
展开
-
Java并发编程:阻塞队列ArrayBlockingQueue
目录一、为什么需要阻塞队列二、阻塞队列接口BlockingQueue三、ArrayBlockingQueue的实现原理1、成员变量2、构造器3、几个重要的方法四、使用阻塞队列实现生产者-消费者模式注:jdk1.7一、为什么需要阻塞队列我们之前都学过队列,如ArrayList,LinkedList等,这些队列都是不涉及到线程管理的,其实它们属于非阻塞队列。...原创 2019-01-11 02:25:38 · 568 阅读 · 0 评论 -
Java并发编程(二):多线程交互(案例)
目录线程状态线程间交互线程间的排队:join()wait()、notify()、notifyAll()死锁信号量 SemaphoreCountDownLatch线程状态在jdk1.8中,线程可以处于以下状态之一:NEW :尚未启动的线程处于此状态。 RUNNABLE :在Java虚拟机中执行的线程处于此状态。 BLOCKED :被阻塞等待监视器锁定...原创 2019-03-06 21:03:00 · 614 阅读 · 0 评论 -
Java并发编程(三):多线程安全分析(案例)
目录模拟数组库Vector与ArrayList源码对比VectorArrayList + synchronizedCollections工具类Lock的读锁和写锁ThreadLocal模拟数组库数据库就类似于一个集合,element其实就是相当于数据库中的一行记录。就比如有一个图书表,有人会去查阅、编辑或是添加信息,他们操作的都是一个图书表中的数据;这...原创 2019-03-08 17:58:39 · 365 阅读 · 0 评论 -
Java并发编程:Condition接口
Java并发编程:阻塞队列ArrayBlockingQueueJava并发编程:Lock接口Java并发编程:浅谈ReentrantLock类在阻塞队列ArrayBlockingQueue中有两个Condition类的对象notNull和notEmpty,他们俩是等待条件。就比如在阻塞添加时(put方法),一旦不满足添加条件,该线程会被notFull条件对象挂起(调用await方法)加...原创 2019-01-16 15:40:58 · 291 阅读 · 0 评论 -
Java并发编程(一):进程和线程
目录一、程序、进程和线程程序进程线程进程与线程的区别二、线程线程的状态线程的创建进程调度与相关API一、程序、进程和线程程序程序是计算机指令的集合;程序是一组静态的指令集,不占用系统运行资源,不能被系统调度,也不能作为独立运行的单元,程序以文件的形式存储在磁盘上。进程进程是一个“执行中的程序”。程序是一个没有生命的实体,只有处理器...原创 2018-11-07 21:58:45 · 457 阅读 · 0 评论 -
Java并发编程:ReentrantLock类(重入锁)
目录一、ReentrantLock的重入性二、公平锁与非公平锁三、测试代码在上篇Java并发编程:Lock接口中,我们了解到Lock类有一个唯一的实现类ReentrantLock类。ReentrantLock重入锁:支持重入性,表示能够对共享资源能够重复加锁,即当前线程获取该锁再次获取不会被阻塞。在java关键字synchronized隐式支持重入性,synchronized通...原创 2019-01-13 16:19:37 · 502 阅读 · 0 评论 -
Java并发编程:Lock接口
目录一、synchronized的不足之处二、Lock类三、多线程如何正确上锁在之前阻塞队列的底层源码中,有一个ReentrantLock类的锁来控制访问,并且有两个Condition类的条件对象(notEmpty和notFull)用来存放阻塞进程。ReentrantLock类其实是Lock接口的实现类。一、synchronized的不足之处JVM提供了synchroniz...原创 2019-01-12 23:30:29 · 365 阅读 · 0 评论 -
Java并发编程:阻塞队列LinkedBlockingQueue
Java并发编程:阻塞队列(一)ArrayBlockingQueue我们都知道ArrayList和LinkedLsit的区别,其实LinkedBlockingQueue和ArrayBlockingQueue之间也存在着类似的区别。因为它们都显现接口BlockingQueue并继承自Queue接口,所以LinkedBlockingQueue和ArrayBlockingQueue的API几乎是一样...原创 2019-01-12 01:48:58 · 454 阅读 · 0 评论 -
Java并发编程:浅谈Fork/Join框架
目录一、Fork/Join的核心思想二、工作"窃取"三、Fork/Join 框架设计步骤四、一个Fork/Join 框架的例子五、Fork/Join 框架的异常处理一、Fork/Join的核心思想Fork/Join 框架是 Java7 提供了的一个用于并行执行任务的框架, 是一个把大任务分割成若干个小任务,最终汇总每个小任务结果后得到大任务结果的框架。Fork的本意...原创 2018-12-30 02:33:01 · 939 阅读 · 0 评论 -
Java并发编程:Future类
目录一、Future的类图结构二、Future的主要方法三、Future的三种状态四、Future,未来!在之前学习线程的时候,老师教了三种创建线程的方法,其中一个就是通过 FutureTask 类来实现的,之前我只知道通过这种方式创建线程可以获得call()方法的返回值,但其实这个返回值就是用来解决run()方法没有返回值从而导致"假并发"(见下文)的缺陷!一、Futur...原创 2018-12-30 04:12:47 · 741 阅读 · 0 评论 -
Java并发编程:Executor框架
目录一、两级调度模型二、Executor框架的结构三、Executor框架中的成员四、Demos我们都知道线程的创建与销毁需要一定的开销,如果每个任务都需要创建一个线程将会消耗大量的计算资源,JDK 5之后把工作单元和执行机制区分开了,工作单元包括Runnable和Callable,而执行机制则由Executor框架提供。Executor框架为线程的启动、执行和关闭提供了便利,...原创 2018-12-31 01:20:36 · 429 阅读 · 0 评论 -
Java并发编程:线程安全&synchronized关键字
目录一、线程安全1、什么是线程安全2、如何避免线程安全问题二、Synchronized关键字1、synchronized,上锁2、怎么上锁3、Demo一、线程安全1、什么是线程安全虽然多线程编程极大地提高了效率,但是也会带来一定线程安全的隐患。举个例子:现在有两个线程分别从网络上爬取数据,然后插入一张数据库表中,要求不能插入重复的数据。在插入数据的过...原创 2019-01-03 16:42:55 · 1256 阅读 · 0 评论 -
Java并发编程:ThreadPoolExecutor常用线程池
目录线程池的分类常用线程池(ThreadPoolExecutor)示例CachedThreadPoolFixedThreadPoolSingleThreadExecutorThreadPoolExecutor类分析三种线程池(返回ThreadPoolExecutor)构造方法ThreadPoolExecutor中的成员变量三种线程池(返回ThreadPoolEx...原创 2019-03-22 22:22:08 · 11242 阅读 · 0 评论