![](https://img-blog.csdnimg.cn/20201014180756925.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
线程安全
_自由之子_
这个作者很懒,什么都没留下…
展开
-
并发控制(3) 使用double check方式的单例,来确保并发下的线程安全的单例模式
这是实现并发下懒汉模式,是线程安全的,叫做double check,另外一种是内部静态类,它们都可以实现多线程下的安全单例package com.bjsxt.base.conn011;public class DubbleSingleton { private static DubbleSingleton ds; public static DubbleSing原创 2016-08-15 21:10:50 · 815 阅读 · 0 评论 -
并发控制(4) 使用CyclicBarrier来控制多线程的执行流程
并发控制(4) 使用CyclicBarrier来控制多线程的执行流程简单理解就是,有A,B,C三个线程,主线程需要通过这3个线程加载制定的资源(流程),如果其中任意一个线程(资源)没有准备好,那都没有办法继续执行下去,这就是CyclicBarrier的作用,或者可以形象的理解为运动员比赛之前,需要统一准备好,才可以开始比赛import java.io.IOException; import j原创 2016-08-21 19:59:57 · 624 阅读 · 0 评论 -
并发控制(5)使用CountDownLatch来控制多线程下的程序流程
并发控制(5)使用CountDownLatch来控制多线程下的程序流程CountDownLatch和CyclicBarrier的区别,其实比较简单,CountDownLatch对执行任务的线程。比如有A,B,C三个线程,那么如果A是设置了countDown.await()这个方法,那么B和C就只能等到A了,什么时候A准备好了,那么B和C才可以执行.典型的场景就是,比如A需要从远程服务器拿到某个资原创 2016-08-21 20:10:58 · 1508 阅读 · 0 评论 -
并发控制(6)ReentrantLock 重入锁
并发控制(6)ReentrantLock 重入锁这个锁基本上概念和synchronized关键字用法很像,但是在实现上和使用上的稳定性上貌似比synchronized要好.但是你在调用锁的时候,要注意释放,不然就麻烦了。。。其他线程没有办法使用资源了有如下代码import java.util.concurrent.CopyOnWriteArrayList;import java.util.原创 2016-08-21 20:19:53 · 262 阅读 · 0 评论 -
并发控制(7)信号量
并发控制(7)信号量Semaphore实现的功能就类似厕所有5个坑,假如有10个人要上厕所,那么同时只能有多少个人去上厕所呢?同时只能有5个人能够占用,当5个人中 的任何一个人让开后,其中等待的另外5个人中又有一个人可以占用了。另外等待的5个人中可以是随机获得优先机会,也可以是按照先来后到的顺序获得机会,这取决于构造Semaphore对象时传入的参数选项。典型的应用场景,可以是限制JAVA程序的原创 2016-08-22 16:28:57 · 400 阅读 · 0 评论 -
使用Threadlocal来解决SimpleDateFormat的多线程安全问题
这个文章其实说的很清楚了下面是实际的代码部分public class JodaDateService implements DateService { private Map<String, String> timeZoneMapping = ImmutableMap.of("LOH", "Europe/London", "HKH", "Asia/Hong_Kong", "NYH", "Ame原创 2016-08-25 12:18:38 · 9908 阅读 · 0 评论 -
Executors 之 ScheduledExecutorService 代码片断
//1 thread for this pool private final ScheduledExecutorService healthCheckScheduler = Executors.newScheduledThreadPool(1); public void scheduleHealthCheck() { //此处使用lambda healthCheck原创 2016-09-06 10:43:45 · 206 阅读 · 0 评论