
java基础学习
清雪冰橙
智商不够,时间来凑。
展开
-
Java并发学习(二)
一、start和run的区别start方法是创建一个新的子线程并启动(调用run方法)run方法只是Thread的一个普通方法的调用二、线程的状态1. 新建(New): 创建后尚未启动的线程的状态2. 运行(Runnable):包含Running和Ready3. 无限期等待(Waiting): 不会被分配CPU执行时间,需要被唤醒没有设置Timeout参数的Object.wait()方法没有设置Timeout参数的Thread.join()方法LockSupport.part()原创 2020-06-13 11:25:13 · 197 阅读 · 0 评论 -
设计模式——动态代理及实现
在啃Spring的AOP之前,在复习以下动态代理及其实现方式代理模式在不使用代理模式的场景下,对象A想使用对象B的功能,一个方法是通过持有对对象B的引用,然后直接使用对象B提供的服务了。而使用了代理模式,则引入一个第三方的代理对象,这个代理对象持有着对对象B的引用,可以调用对象B的服务与资源,而如果有对象希望使用对象B提供的服务的话,则不再去找对象B,而是去找这个代理对象。 如下图所示。...原创 2020-05-07 21:55:25 · 191 阅读 · 0 评论 -
new一个对象的过程
一、预备知识1. JVM运行时数据区域1.1 方法区方法区存放了什么?方法区主要存放的内容有:常量池被虚拟机加载的类的信息,比如方法名字,类的名字,父类、接口以及一些静态变量,静态方法等。一些即时编译器编译的代码数据、常量。方法区的实现jdk1.6及之前,方法区是完全由永久代实现的;在jdk1.7时,将方法区的常量池放到了堆中进行实现;在jdk1.8时,引...原创 2020-04-21 00:20:57 · 1146 阅读 · 0 评论 -
ThreadLocal学习
一、ThreadLocal解决了什么问题在一些情况下,我们希望对于某一个共享变量,对于不同线程来说都是独一无二的,例如:有一个共享变量x,线程A去对其进行写操作,读操作,线程B也对其进行写操作读操作,而线程A和线程B在去读写x时的感觉,就像是读写一个本地变量一样,完全与外界封闭, 这就是线程封闭的想法。下面有三种线程封闭的实践:Ad-hoc 线程封闭:即维护线程封闭性职责交给程序实现,...原创 2020-04-03 12:49:55 · 147 阅读 · 0 评论 -
Java并发编程学习笔记
第二章 Java并发机制的底层实现原理一、Volatile关键字作用:保证了“共享变量”在多线程环境下的“可见性”.底层实现原则:对被volatile修饰的变量进行写操作的时候,JVM会向处理器发送一条#Lock前缀指令,这个指令的作用就是将对应缓存行的数据写回到被缓存的内存。一个处理器将缓存回写到内存<addr>中,那么其他处理器中对<addr>...原创 2020-04-18 20:37:59 · 193 阅读 · 0 评论