随笔分类 -  Java高级开发工程师

08:Java锁相关
摘要:锁: 自旋锁: 为了判断某个条件是否成立,将代码写在While循环中。一直去判断这个条件。 为了不放弃CPU的执行事件,循环使用CAS技术对数据进行尝试操作。 悲观锁:假设会发生并发冲突,同步所有对数据的操作。 乐观锁:假设没有发生冲突,在修改数据时如果发现版本号不一样了,重新读数据然后尝试修改。 阅读全文

posted @ 2020-04-02 14:42 笑明子 阅读(173) 评论(0) 推荐(0)

08:线程安全之原子性操作
摘要:竞太条件和临界区:(其实就是多线程访问相同资源的描述术语) 多个线程访问了相同的资源,向这些资源执行了写操作,并对执行顺序有要求。就可能出现竞态条件。 临界区:一段代码,如果在多线程执行的情况下,会对结果产生影响。那么这段代码就是临界区。 竞态条件:是指多线程环境下竞争共享资源的情形。 原子性操作: 阅读全文

posted @ 2020-04-02 08:29 笑明子 阅读(219) 评论(0) 推荐(0)

07:线程安全-可见性问题
摘要:由指令重排序引起的可见性问题: public class Test { // 如果运行时加上 -server 下面的代码就变成了死循环,没有加就正常运行。(运行器的编译优化只有在服务器模式下才执行) // 通过设置JVM参数,打印出JIT(即时编译)编译的内容(这里说的编译不是指class文件的编译 阅读全文

posted @ 2020-03-30 20:51 笑明子 阅读(147) 评论(0) 推荐(0)

06:线程池
摘要:1:线程池原理-基本概念: 1:线程池管理器:用户管理线程池。包括创建线程池、销毁线程池,添加新任务等。 2:工作线程:工作线程就是线程池中实际工作的线程。没有任务时:处于等待状态,有任务时:可以循环的执行任务。 3:任务接口:每个任务都需要实现的接口。规范了任务的输入、输出等。 4:任务队列:任务 阅读全文

posted @ 2020-03-30 20:50 笑明子 阅读(140) 评论(0) 推荐(0)

05:线程封闭
摘要:什么是线程封闭: 数据被封闭到各自的线程中,从而避免使用同步的技术。这个概念称作线程封闭。 为什么提出线程封闭: 多线程访问共享可变的数据是,涉及到了数据同步问题。但是并不是所有的时候都需要共享数据。所以提出了线程封闭的概念。 Java中线程封闭的具体实现有:ThreadLocal、栈封闭。 1:T 阅读全文

posted @ 2020-03-30 20:46 笑明子 阅读(106) 评论(0) 推荐(0)

04:线程通信
摘要:实现线程间通讯的方法: 1:文件共享 2:网络共享(共享网络资源) 3:共享变量 4:JDK提供的线程协调API(wait/notify , park/unpark) 1:文件共享: 通过向同一个文件写数据和读数据的形式共享信息。 2:变量共享: 通过写和读同一个内存对象的形式共享数据。 3:线程协 阅读全文

posted @ 2020-03-30 20:45 笑明子 阅读(126) 评论(0) 推荐(0)

03:CPU缓存和内存屏障
摘要:CPU的缓存 存在三级: 注意:没有CPU都有缓存自己的L1和L2,但是L3是多核共用的。 CPU读取数据:L1>L2>L3>内存>硬盘 多个缓存中的数据一致性问题: 多个缓存同时持有一个数据时,谁的修改会被承认呢,CPU厂商们讨论出一个协议,名叫MESI协议。 MESI 协议为缓存中数据添加了四种 阅读全文

posted @ 2020-03-30 20:41 笑明子 阅读(202) 评论(0) 推荐(0)

02 :线程状态和终止
摘要:1:线程的6中状态 线程的状态在JavaThread类中有明确的定义,一共有6种: 由于CPU调度的原因,Runnable状态有两种情况:1:运行中,2:CPU可以随时运行。 如果一个线程已经运行结束了,你还调用 start()方法,会抛出异常。 2:如何终止一个正在运行的线程 不正确的方法: 1: 阅读全文

posted @ 2020-03-30 20:40 笑明子 阅读(183) 评论(0) 推荐(0)

01 :Java程序运行原理
摘要:Class 文件内容? Class文件包含Java执行的字节码,数据是严格按照“Jvm规定的格式”排列的二进制流。 文件头是:ca fe ba be(16进制咖啡宝贝) 通过java -p class可以看到: 主/次版本号: version52: // 版本号规则:JDK5,6,7,8 分别对应 阅读全文

posted @ 2020-03-30 20:36 笑明子 阅读(184) 评论(0) 推荐(0)

导航