![](https://img-blog.csdnimg.cn/20201014180756754.png?x-oss-process=image/resize,m_fixed,h_64,w_64)
java基础
文章平均质量分 66
宇宙小生命
这个作者很懒,什么都没留下…
展开
-
JMM内存可见性问题-工作内存读写主存时机
工作内存和主存刷新时机是个很有意思的问题,网上有不少文章,但是写的都不是很全,所以这里亲自下场用代码实验一、内存可见性:内存可见性是并发编程中容易忽略的一个问题,但我认为他是一个非常重要的问题,只有对内存模型深刻理解才能发现这个问题。主内存:线程共享内存,主要是堆和方法区;工作内存:线程私有内存。相比于主存,工作内存离cpu更近性能更好,当线程访问公共变量时,会将变量copy一份到工作内存作为副本,后续都直接操作这个副本。当然这里面核心的问题就是副本什么时候更新?什么时候重新从主存里.原创 2022-04-15 18:51:40 · 723 阅读 · 0 评论 -
三分钟理解Java继承和多态原理
现上一道面试题public class MainClass { public static void main(String[] args) { Fu f = new Zi(); Zi z = new Zi(); System.out.println("f.num:"+f.num); System.out.p原创 2015-03-31 11:48:21 · 2023 阅读 · 0 评论 -
ThreadLocal的使用
熟悉Looper源码的朋友可能知道,looper与线程绑定并不是直接set进去的,而是通过ThreadLocal这个东西间接将looper的引用交给当前线程持有的。Looper.java private static void prepare(boolean quitAllowed) { if (sThreadLocal.get() != null) {原创 2015-04-04 20:59:29 · 664 阅读 · 0 评论 -
java并发处理 synchronized volatile ActomicInteger的关系与区别
java中的多线程并发问题是一个让人头疼的问题,因为当多个线程访问同一个资源时,由于一段操作非原子性,就会导致可能出现操作到一半的时候,cpu时间片被切换到其它线程里面去,最终再切换回来的时候,该线程之前所获取的资源已经相当于失效了,但是该线程并不知道,会继续使用,最终导致脏数据的产生。当然java为了解决这个问题提出了同步机制,现在分析其中三个易搞混的东西。 1. synchronized原创 2015-04-22 12:09:05 · 2471 阅读 · 0 评论 -
关于两个设计模式的心得----模版方法模式、责任链模式
最近在做一个蓝牙稳定性的自动化测试工具,就是用app模拟人的行为,自动去跑一些蓝牙相关的测试用例,譬如间隔传输数据、传输大数据、反复开关蓝牙等,再加上不同的参数配置,一共加起来大概有30多个case要跑,并且需要这些case串行执行,就是一个case跑完了才能执行下一个。这个时候如果没有一个设计框架在里面,直接硬编码实现每一个case会无比混乱,尤其是想实现串行执行会很麻烦。所以搞了一套框架,主要原创 2016-12-09 20:16:48 · 608 阅读 · 0 评论