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