2018第23周总结
Java操作系统硬件的方法Unsafe
Java中通过Unsafe类native方法,通过JNI绕过JVM来操作系统cpu、内存等硬件,实现更高效率的操作,在Java基础类库和第三方开源库中都有广泛的应用,比如JUC、Netty、Kafka等。通过Unsafe你可以自己内存管理、实例化对象、操作类、对象、变量、数组,可以实现多线程同步的基础、内存屏障等。Java9中移动了Unsafe类包并增加了大量的注释,对它又放开了些。
Java并发实现线程阻塞原语LockSupport
LockSupport工具类通过静态方法提供了多线程间阻塞唤醒原语,和CAS操作一样是JUC锁的基础,它的原理是通过类似信号量的permit【值为0或1】控制线程是否阻塞,调用unpack将其值设置为1,调用pack方法时消费permit,若本身permit已为0则阻塞当前线程。它与原来Ojbect的wait、notify方法阻塞线程的好处时,不用像或者一样必须在同步块中,并且可以先在某些特殊情况下即使先执行了unpack再park也不会导致线程意外阻塞。
JUC包中的锁框架
JUC包中的锁,包括:Lock接口,ReadWriteLock接口,LockSupport阻塞原语,Condition条件,AbstractOwnableSynchronizer/AbstractQueuedSynchronizer/AbstractQueuedLongSynchronizer三个抽象类,ReentrantLock独占锁,ReentrantReadWriteLock读写锁。由于CountDownLatch,CyclicBarrier和Semaphore也是通过AQS来实现的。
线程中断总结
线程中断是开发者为了响应用户取消任务的请求让线程安全退出的一种推荐做法。它通过一个中断标记来让线程知道是否有其它线程请求让它中断,然后开发者让线程在合适的时候让自己退出。即不会造成不能停止线程导致的用户不能取消任务问题,也不会因为强行停止任务而导致数据不一致等问题。
【推荐】国内首个AI IDE,深度理解中文开发场景,立即下载体验Trae
【推荐】编程新体验,更懂你的AI,立即体验豆包MarsCode编程助手
【推荐】抖音旗下AI助手豆包,你的智能百科全书,全免费不限次数
【推荐】轻量又高性能的 SSH 工具 IShell:AI 加持,快人一步
· Linux系列:如何用heaptrack跟踪.NET程序的非托管内存泄露
· 开发者必知的日志记录最佳实践
· SQL Server 2025 AI相关能力初探
· Linux系列:如何用 C#调用 C方法造成内存泄露
· AI与.NET技术实操系列(二):开始使用ML.NET
· 无需6万激活码!GitHub神秘组织3小时极速复刻Manus,手把手教你使用OpenManus搭建本
· C#/.NET/.NET Core优秀项目和框架2025年2月简报
· Manus爆火,是硬核还是营销?
· 终于写完轮子一部分:tcp代理 了,记录一下
· 【杭电多校比赛记录】2025“钉耙编程”中国大学生算法设计春季联赛(1)
2017-06-10 《为什么我们的决策总出错》摘录
2016-06-10 哪些小习惯一旦养成终生受用?
2015-06-10 2015第24周三Spring事务3
2014-06-10 第24周二
2012-06-10 图片搜索原理认识
2012-06-10 人脸识别认识