java 并发
文章平均质量分 78
chenjian98
从事java开发。
展开
-
AtomicInteger源码解析
AtomicInteger一个提供原子操作的Integer类AtomicInteger 上代码: public class AtomicInteger extends Number implements java.io.Serializable { private static final long serialVersionUID = 6214790243416807050L;原创 2016-10-20 14:37:29 · 277 阅读 · 0 评论 -
Java并发编程:Callable、Future和FutureTask
在前面的文章中我们讲述了创建线程的2种方式,一种是直接继承Thread,另外一种就是实现Runnable接口。 这2种方式都有一个缺陷就是:在执行完任务之后无法获取执行结果。 如果需要获取执行结果,就必须通过共享变量或者使用线程通信的方式来达到效果,这样使用起来就比较麻烦。 而自从Java 1.5开始,就提供了Callable和Future,通过它们可以在任务执行完毕原创 2016-03-01 20:54:46 · 253 阅读 · 0 评论 -
java并发编程lock
Java并发编程:Lock 在上一篇文章中我们讲到了如何使用关键字synchronized来实现同步访问。本文我们继续来探讨这个问题,从Java 5之后,在java.util.concurrent.locks包下提供了另外一种方式来实现同步访问,那就是Lock。 也许有朋友会问,既然都可以通过synchronized来实现同步访问了,那么为什么还需要提供Lock?这个问题将在下原创 2016-03-01 19:18:26 · 369 阅读 · 0 评论 -
ConcurrentHashmap实现原理
概述 我们在之前的博文中了解到关于 HashMap 和 Hashtable 这两种集合。其中 HashMap 是非线程安全的,当我们只有一个线程在使用 HashMap 的时候,自然不会有问题,但如果涉及到多个线程,并且有读有写的过程中,HashMap 就不能满足我们的需要了(fail-fast)。在不考虑性能问题的时候,我们的解决方案有 Hashtable 或者Collections.syn原创 2016-11-04 21:10:49 · 413 阅读 · 0 评论 -
java线程池
1、为什么要用线程池:一、减少线程创建和销毁开销 二、当前任务与主线程隔离,实现和主线程异步执行 2、线程池分类: Java类库提供了许多静态方法来创建一个线程池: a、newFixedThreadPool 创建一个固定长度的线程池,当到达线程最大数量时,线程池的规模将不再变化。 b、newCachedThreadPool 创建一个可缓存的线程池,如果当前线程池的规原创 2016-12-26 23:55:12 · 318 阅读 · 0 评论 -
java 并发之 CyclicBarrier
package com.chen.practise; import java.util.concurrent.BrokenBarrierException; import java.util.concurrent.CyclicBarrier; public class TestCycicBarries { //栅栏的使用:当一组任务全部执行结束后,某个任务才可以执行。 //在所有 subt原创 2017-12-19 23:08:53 · 324 阅读 · 0 评论