java基础
java基础
李煊
这个作者很懒,什么都没留下…
展开
-
线程同步
第一种方式: 关键字synchronized:可用在代码块和方法中,用在代码块需要有(锁对象): 什么情况下会释放同步监视器的锁定: 1.程序执行完毕 2.遇到return,break 3.报错或异常 4.调用了wait(),wait是object的方法,因此所有对象均可调用。调用wait会暂停线程使线程进入阻塞状态,等待唤醒notify(); 注意:wait只有在对象获取到同...原创 2019-03-07 11:19:14 · 131 阅读 · 0 评论 -
线程生命周期
线程有五种状态: 创建:被new出来 就绪:调用start方法 运行:获得资源运行 阻塞:调用sleep资源主动放弃资源,进入阻塞状态;调用阻塞io方法进入阻塞状态;试图获取同步监视器,但是该监视器被占用;线 程正在等待通知(notify) 死亡:run执行完毕或出现异常或错误;或调用stop()方法 线程进入阻塞的几种情况: 1.调用sleep方法,主动放弃...原创 2019-03-06 14:10:34 · 92 阅读 · 0 评论 -
线程-创建
1.概念: 进程:进程是处于运行过程中的程序,并且具有一定独立功能,进程是系统进行资源和调度的基本单位。 线程:线程是进程的执行单元。 并发性:同一时刻只有一条指令执行,但是多个进程指令快速轮换执行。 并行性:同一时刻有多条指令在多个处理器上同时执行; 进程与线程的区别: 地址空间:同一进程的线程共享本进程的地址空间,而进程之间则是独立的地址空间。 资源拥有:同一进程内的线程共...原创 2019-03-05 21:46:35 · 141 阅读 · 0 评论 -
动态代理Proxy
动态代理:个人理解,通过第三方创建你想要的对象,由第三方管理你的对象。且你想执行对象的方法,也会有一个类似于(真正方法执行前和后都有)拦截器的功能,在执行你需要调用的方法的前后做一些操作。 需要理解两个类: Proxy:可以理解为第三方,相当于把你想创建的类的外面进行了一个封装,你想创建一个类的实例对象,你告诉Proxy一些类的信息:这个类实现了哪些接口(数组对象),被代理的对象一定要实现某一...原创 2019-03-05 16:29:19 · 456 阅读 · 0 评论 -
反射设置属性
通过反射设置属性,思路: 获取class对象a; 通过a创建实例对象b,获取属性c; c.setAccessible(true),设为可操作,可以操作私有属性; c.setXXX(target,value):target被修改属性的实例对象,set后的XXX为8种基础类型,若属性为引用对象则去掉XXX。 获取属性值: 1,2同上 c.getXXX(target); ...原创 2019-03-05 14:25:01 · 2380 阅读 · 0 评论 -
反射-创建对象-调用方法
通过反射创建对象的思路: 1.首次获取类的类对象,获取方式看前一篇博客。 2.调用类对象的newInstance()方法创建该类的实体对象。这是调用的类的默认构造器。 若想调用非默认的构造器创建实例对象,需要先通过class对象获取构造器,在用构造器调用newInstance()方法创建。 例子:创建一个对象池,读取property文件,创建对象,spring依赖注入的基本原理也是这样实现...原创 2019-03-05 14:11:12 · 1264 阅读 · 0 评论 -
查看类信息(反射的基础)
当无法确定调用哪一个子类(子类名作为参数传递)的某一个方法时,也许会用到反射。反射可以获取到类的所有信息。 反射的思路: 通过类加载器加载类,类被加载后就会创建一个该类的类对象在内存中,获取到这个类对象就可以调用方法获得类信息了(类对象与实例对象不一样)。 获取类对象的方法有三种: 1.Class.forName("完整包名"):Class.forName(“pacage.A”)。需要捕捉...原创 2019-03-04 21:57:00 · 239 阅读 · 0 评论 -
classload
类加载器分为4类: 根类加载器(Bootstrap ClassLoader):加载jre中的String等,java核心类,了解即可。 扩展类加载器(Extension ClassLoader):加载JAVA_HOME/jre/lib/ext下的jar包。自己写的jar包可以放在下面就可以被加载。 系统类加载器(System ClassLoader):应用加载类,通过java命令加载类,...原创 2019-03-04 21:24:34 · 256 阅读 · 0 评论 -
java存储机制,堆,栈,方法区
1.个人理解 java存放数据的地方有3个:堆(heap)、栈(steak)、方法区(method) 堆:存放对象实例的地方 栈:存放基础类型对象和对象引用的地方,且一个线程有一个独立的线程栈,线程之间数据不共享。栈分为3个部分:基本类型变量区、执行环境上下文、操作指令区(存放操作指令) 方法区:存储静态变量、加载类信息,所有只执行加载一次的信息都在方法区中存储。与堆一样被所有线程共享。 ...转载 2019-03-04 15:37:53 · 191 阅读 · 0 评论 -
java基础-初始化块
加了static就是静态初始化块。静态初始化块只能调用静态资源。没有加static修饰符的就是普通初始化代码块。 new一个实力对象时,先执行初始化块,在执行构造函数。 静态只在加载类的时候执行一次,普通代码块在new对象时每次都会调用。 补充知识点: 1.new一个对象时会先加载类信息,类信息加载后在创建实例对象,后面创建实例对象不会在加载类,所以静态资源只执行一次。 2. 一个有...原创 2019-03-03 21:51:25 · 106 阅读 · 0 评论