并发编程
文章平均质量分 91
艾尔文大叔
14年IT农民工,解决过不少疑难杂症,也制造过"惊星动魄"的生产事故,陪运维兄弟通宵熬过肝、看过月亮,也跟客户推杯换盏一醉方休过,
北上广杭加上大武汉,10年多风雨兼程,志在四方,
熬了肝,长了肉,秃了头,长了皱,
结识了一帮IT界的天兵神将,一起灭了许多个"八阿哥",团灭过小学生的王者水晶塔,
曾经最愚蠢的投资是把血汗钱投给了股市,自己却要继续敲996的键盘
展开
-
网络编程(Java)相关知识总结
java网络编程知识原创 2024-06-25 15:49:37 · 602 阅读 · 0 评论 -
Semaphone源码解析
sync,ReentrantLock是互斥锁,保证一个资源同一时间只允许被一个线程访问Semaphore(信号量)保证1个或多个资源可以被指定数量的线程同时访问底层实现是基于AQS去做的。Semaphore底层也是基于AQS的state属性做一个计数器的维护。state的值就代表当前共享资源的个数。如果一个线程需要获取的1或多个资源,直接查看state的标识的资源个数是否足够,如果足够的,直接对state - 1拿到当前资源。如果资源不够,当前线程就需要挂起等待。原创 2024-05-14 18:05:58 · 453 阅读 · 0 评论 -
CountDownLatch源码解析
CountDownLatch就是JUC包下的一个工具,整个工具最核心的功能就是计数器。如果有三个业务需要并行处理,并且需要知道三个业务全部都处理完毕了。需要一个并发安全的计数器来操作。CountDownLatch就可以实现。给CountDownLatch设置一个数值。可以设置3。每个业务处理完毕之后,执行一次countDown方法,指定的3每次在执行countDown方法时,对3进行-1。主线程可以在业务处理时,执行await,主线程会阻塞等待任务处理完毕。原创 2024-05-14 18:02:31 · 972 阅读 · 0 评论 -
并发编程可见性
可见性问题是基于CPU位置出现的,CPU处理速度非常快,相对CPU来说,去主内存获取数据这个事情太慢了,CPU就提供了L1,L2,L3的三级缓存,每次去主内存拿完数据后,就会存储到CPU的三级缓存,每次去三级缓存拿数据,效率肯定会提升。这就带来了问题,现在CPU都是多核,每个线程的工作内存(CPU三级缓存)都是独立的,会告知每个线程中做修改时,只改自己的工作内存,没有及时的同步到主内存,导致数据不一致问题。可见性问题的代码逻辑// ....原创 2024-05-09 16:38:07 · 516 阅读 · 0 评论 -
并发编程的原子性
Lock锁是在JDK1.5由Doug Lea研发的,他的性能相比synchronized在JDK1.5的时期,性能好了很多多,但是在JDK1.6对synchronized优化之后,性能相差不大,但是如果涉及并发比较多时,推荐ReentrantLock锁,性能会更好。然后是弱引用,它比软引用的生存期更短,对于只有弱引用的对象来说,只要垃圾回收机制一运行,不管 JVM 的内存空间是否足够,总会回收该对象占用的内存。他在替换内存的某个位置的值时,首先查看内存中的值与预期值是否一致,如果一致,执行替换操作。原创 2024-05-09 16:35:59 · 1142 阅读 · 0 评论 -
并发编程原子性保证方式
保证并发编程原子性。原创 2024-04-26 08:56:42 · 716 阅读 · 0 评论