![](https://img-blog.csdnimg.cn/20201014180756916.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
Java 并发多线程
文章平均质量分 79
import_allen
每天都被自己弱醒
展开
-
Java多线程——并发容器简介
这里主要是简单介绍几种比较常见的并发容器,目的是梳理一下。由于每一个类的底层实现都是非常复杂的,用到了很多精妙的多线程的技巧,限于篇幅和水平,就不做深入的探讨。纸上得来终觉浅,只有多加实践,多看源码,才能深入理解它们。一、ConcurrentHashMap提供高并发性的线程安全的HashMap,实现了的HashMap的功能,并且实现了接口ConcurrentMap所定义的原子的pu原创 2015-03-11 21:25:58 · 1727 阅读 · 0 评论 -
Java多线程——加锁机制
Java的锁分为内置锁和显式锁。内置锁在我们平时使用synchronized关键字的时候获取。显式锁则是通过获取java.util.concurrent.locks包下面的ReentrantLock类或者ReentrantReadWriteLock类的实例来获取的。原创 2015-03-08 19:54:32 · 3371 阅读 · 0 评论 -
Java多线程——高级同步机制
内置锁和显式锁是两种比较基本的同步方式,除此之外,Java还提供了一些高级的同步工具:1. Semaphores2. CountDownLatch3. CyclicBarrier4. Phaser5. Exchanger一、控制资源访问:Semaphores (信号量).当一个线程试图访问共享的资源时,它首先要获取许可。如果内部的信号量计数器是大于0的话,原创 2015-03-09 12:27:09 · 1172 阅读 · 0 评论 -
Java多线程——Executor框架
一、显示地创建线程Java中显示地创建一个线程,只需要创建Thread(或者其子类,或者实现了Runnable的类)的实例即可。通过调用start()方法就可以启动该线程。例子:Thread thread = new Thread(task){ @Override public void run() { // Blablabal }};thread.start();原创 2015-03-14 18:24:12 · 463 阅读 · 0 评论 -
Java多线程——线程池
一、ThreadPoolExecutor接口之前提到过Executors所提供的四种线程池,即:Scheduled,Single,Fixed,Cached。如果这几种线程池不能完全满足你的需求,那么通过ThreadPoolExecutor你也可以创建并且定制合适的线程池。ThreadPoolExecutor常用的构造函数:public ThreadPoolExecutor (i原创 2015-03-15 10:59:39 · 463 阅读 · 0 评论 -
Java多线程——Fork/Join框架
使用多线程技术,让不同的任务在不同的线程中运行,可以提高CPU的利用率。然而只是仅仅通过任务来划分,粒度还是有点大。当任务中有些任务运行所占时间远远大于其它任务的时候,使用多线程并发所带来的效果并不明显。在这种情况下把耗时长的大任务划分为耗时短的小任务,可以有效地缓解并发的瓶颈,最终把小任务的结果合并获取完整的任务的结果。Fork/Join就可以很好地实现这种划分任务最后合并的思路(你可以把它当做原创 2015-03-18 22:46:26 · 603 阅读 · 0 评论 -
Java多线程——竞态条件与原子性
一、 竞态条件(Race Condition)在多线程的环境下,程序输出的结果会受到线程执行顺序的影响的现象叫做竞态条件。举个例子:class Counter { private int count = 0; /** * @return the count */ public int getCount() { return count; } public vo原创 2015-03-09 10:01:47 · 677 阅读 · 0 评论