随笔分类 - java
有关java技术和源码的分析
摘要:微信公众号:房东的小黑黑 路途随遥远,将来更美好 学海无涯,大家一起加油! Condition条件队列 当我们进行线程间的通信时,可以使用ReetrantLock与Condition相结合,其中的await()和signal()方法进行线程间的阻塞与唤醒。我将详细的解释其中的机制。 Conditio
阅读全文
摘要:什么是ThreadLocal 大家是否了解JMM(java内存模型),它主要是为了解决多线程下的共享内存操作问题,为了保证数据的一致性,我们在自己的工作内存操作修改变量后,会提交到主内存中进行覆盖,并且使其他线程中工作内存中的共享变量删除,使得其他线程在自己的工作内存中访问不到该共享变量副本,只能到
阅读全文
摘要:AQS是并发编程的一个最基本组件,是一个抽象同步器。 网上有很多详细介绍AQS的博文,在这里我就不仔细介绍了,主要写一些重要的内容。 AQS中重要的几个属性: 由于一个共享资源同一时间可以被一条线程持有,也可以被多个线程持有,因此AQS中存在两种模式, 和`独占模式`。 共享模式是共享状态值stat
阅读全文
摘要:在多线程情景下,如果不会某一共享变量采取一些同步机制,很可能发生数据不安全现象,比如购买车票时,当多个人购买时,不加锁就会产生多人买同一张票的现象,显然这是不可取的。所以要有一种同步机制,在某一时刻只能有一个线程处理该共享变量。 同步器的加锁 我将自己实现的同步器成为RoadAQS. 主要变量如下:
阅读全文
摘要:什么是线程池 线程池实际上就是一个线程缓存集合,负责对线程进行统一分配、调优和调度。 线程是稀缺资源,它的创建与销毁是一个相对来说相对偏重且资源消耗的操作,而java线程依赖于内核线程,创建线程需要进行系统操作系统切换,为避免资源过度消耗需要重用线程执行多个线程。 线程池的好处 重用存在的线程,减少
阅读全文
摘要:在1.7和1.8版本中,计算size()方法有写不同。先介绍1.7版本的实现。 1.7版本 在1.7版本中,有一个重要的类 ,利用它来实现分段锁 刚一开始不加锁,前后计算两次所有segment里面的数量大小和,两次结果相等,表明没有新的元素加入,计算的结果是正确的。如果不相等,就对每个segment
阅读全文
摘要:ConcurrentHashMap解决了HashMap的线程不安全问题,在分析之前先介绍一个将HashMap线程安全的方法。利用 调用内部类 内部主要有两个变量,一个普通变量Map,还有一个互斥锁mutex。通过构造方法将外部的Map传入进去,如果没有要传入的mutex,则将引用 赋值给 ,就产生了
阅读全文

浙公网安备 33010602011771号