Harris的博客

一花一世界,一叶一菩提,一心一静思,一步一脚印

排序:
默认
按更新时间
按访问量

什么是 CAS 机制?

示例程序:启动两个线程,每个线程中让静态变量count循环累加100次。[java] view plain copypublic class TestThreadAtomic {      private static Integer count = 0;      public static v...

2018-04-17 11:39:33

阅读数:41

评论数:0

两个线程进行数据交换的Exchanger

两个线程进行数据交换的Exchanger简介Exchanger(交换者)是一个用于线程间协作的工具类。Exchanger用于进行线程间的数据交换。它提供一个同步点,在这个同步点两个线程可以交换彼此的数据。这两个线程通过exchange方法交换数据, 如果第一个线程先执行exchange方法,它会一...

2018-04-10 17:11:54

阅读数:20

评论数:0

同步屏障CyclicBarrier

简介CyclicBarrier 的字面意思是可循环使用(Cyclic)的屏障(Barrier)。它要做的事情是,让一组线程到达一个屏障(也可以叫同步点)时被阻塞,直到最后一个线程到达屏障时,屏障才会开门,所有被屏障拦截的线程才会继续干活。CyclicBarrier默认的构造方法是CyclicBar...

2018-04-10 17:05:29

阅读数:16

评论数:0

控制并发线程数的Semaphore

控制并发线程数的Semaphore简介        Semaphore(信号量)是用来控制同时访问特定资源的线程数量,它通过协调各个线程,以保证合理的使用公共资源。很多年以来,我都觉得从字面上很难理解Semaphore所表达的含义,只能把它比作是控制流量的红绿灯,比如XX马路要限制流量,只允许同...

2018-04-10 16:36:54

阅读数:32

评论数:0

Java阻塞队列ArrayBlockingQueue和LinkedBlockingQueue实现原理分析

Java阻塞队列ArrayBlockingQueue和LinkedBlockingQueue实现原理分析原文出处: FormatJava中的阻塞队列接口BlockingQueue继承自Queue接口。BlockingQueue接口提供了3个添加元素方法。add:添加元素到队列里,添加成功返回tru...

2018-04-10 14:29:44

阅读数:18

评论数:0

Java线程的5种状态及切换(透彻讲解)

Java中的线程的生命周期大体可分为5种状态。1. 新建(NEW):新创建了一个线程对象。2. 可运行(RUNNABLE):线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。3. 运行(RUNN...

2018-04-10 14:01:34

阅读数:31

评论数:0

理解线程池的原理

转至:https://blog.csdn.net/mine_song/article/details/70948223读完本文你将了解:什么是线程池线程池的处理流程保存待执行任务的阻塞队列创建自己的线程池JDK 提供的线程池及使用场景newFixedThreadPoolnewSingleThrea...

2018-04-10 11:54:33

阅读数:24

评论数:0

ReenTrantLock可重入锁 和synchronized的区别

ReenTrantLock可重入锁(和synchronized的区别)总结可重入性:从名字上理解,ReenTrantLock的字面意思就是再进入的锁,其实synchronized关键字所使用的锁也是可重入的,两者关于这个的区别不大。两者都是同一个线程没进入一次,锁的计数器都自增1,所以要等到锁的计...

2018-04-10 11:38:44

阅读数:29

评论数:0

ThreadLocal的一些学习理解

ThreadLocal1、 多线程同时访问统一共享属性的时候产生的线程安全问题的一种解决方案,适用于每个线程对这个共享属性的修改都不会影响到其他线程,即不需要线程间通信的这种情况;这样做是为了避免使用同步锁导致的效率问题(每个线程各创建一个共享数据的副本分别服务于各自的线程);2、 每个Threa...

2018-04-10 10:01:30

阅读数:21

评论数:0

Semaphore实现原理分析

synchronized的语义是互斥锁,就是在同一时刻,只有一个线程能获得执行代码的锁。但是现实生活中,有好多的场景,锁不止一把。比如说,又到了十一假期,买票是重点,必须圈起来。在购票大厅里,有5个售票窗口,也就是说同一时刻可以服务5个人。要实现这种业务需求,用synchronized显然不合适。...

2018-04-09 11:51:13

阅读数:32

评论数:0

Java中CountDownLatch,CyclicBarrier以及Semaphore的使用场景

1.CountDownLatchCountDownLatch一般是用于某个线程等待其他线程执行完之后,它才能执行,构造方法参数指定了计数的次数,countDown方法,当前线程调用此方法,则计数减一 ,awaint方法,调用此方法会一直阻塞当前线程,直到计时器的值为0;代码示例转至:https:/...

2018-04-08 17:28:05

阅读数:18

评论数:0

JAVA四种线程池的使用

Java通过Executors提供四种线程池,分别为: newCachedThreadPool创建一个可缓存线程池,如果线程池长度超过处理需要,可灵活回收空闲线程,若无可回收,则新建线程。 newFixedThreadPool 创建一个定长线程池,可控制线程最大并发数,超出的线程会在队列中等待。 ...

2018-04-08 17:14:05

阅读数:14

评论数:0

提示
确定要删除当前文章?
取消 删除
关闭
关闭