摘要:
恶汉式: 以下实现中,私有静态变量 unInstance 被延迟实例化,这样做的好处是,如果没有用到该类,那么就不会实例化 uniqueInstance,从而节约资源。 这个实现在多线程环境下是不安全的,如果多个线程能够同时进入 if (unInstance == null) ,并且此时 unIns 阅读全文
摘要:
hashmap不是一个线程安全的类,上面就是对其进行测试 执行结果: 再执行一次: 可见不是线程安全的, 测试concurrentHashmap,可以知道是线程安全的 hashtable也是线程安全: 总结:通过semaphore来模拟线程数,然后通过countdownlatch线程计数器来计算执行 阅读全文
摘要:
在Java的并发包中,Semaphore类表示信号量。Semaphore内部主要通过AQS(AbstractQueuedSynchronizer)实现线程的管理。Semaphore有两个构造函数,参数permits表示许可数,它最后传递给了AQS的state值。线程在运行时首先获取许可, 如果成功, 阅读全文
摘要:
CountDownLatch的作用是能使用多个线程进来之后,且线程任务执行完毕之后,才执行, 闭锁(Latch):一种同步方法,可以延迟线程的进度直到线程到达某个终点状态。通俗的讲就是,一个闭锁相当于一扇大门,在大门打开之前所有线程都被阻断,一旦大门打开所有线程都将通过,但是一旦大门打开,所有线程都 阅读全文
摘要:
CyclicBarrier,一个同步辅助类,在API中是这么介绍的: 它允许一组线程互相等待,直到到达某个公共屏障点 (common barrier point)。在涉及一组固定大小的线程的程序中,这些线程必须不时地互相等待,此时 CyclicBarrier 很有用。因为该 barrier 在释放等 阅读全文