反射技术和多线程

学习主题:反射技术
学习目标:
1 掌握反射获取Class信息,操作方法,操作属性,操作构造器,操作泛型
2 掌握什么是注解,编写自己的注解

1.反射机制介绍_Class对象获取
(1)反射机制的常见作用是什么?
1、动态的加载类,动态的获取类的信息(属性,方法,构造器)
2、动态构造对象
3、动态调用类和对象的任意方法、构造器
4、动态调用和处理属性
5、获取泛型信息
6、处理注解
(2)获取Class对象的方式有哪些?
1、通过对象的getClass()方法获取
2、通过字节码文件获取
3、通过Class类的静态方法获取

2.反射机制动态操作方法_属性_构造器
(1)使用反射机制获取类的名称和属性的方法有哪些?并简述其含义
制获取类的名称:1、String getName() 获取包名+类名
2、String getSimpleName() 获取类的名字
属性的方法:1、Field getField(String fieldName)得到公共的属性
2、Field getDeclareField(String fieldName)得到指定名称的属性对象
3、Field[] c.getDeclaredField()得到所有属性的对象
(2)使用反射机制获取方法及构造方法的方法有哪些?并简述其含义
获取方法:
1、Method[] getDeclaredMethods()得到公共的方法对象
2、Method[] c.getMethods()得到父类及本类
3、Method getDeclaredMethod(String methodName,Class…type)得到指定名称本类中公共所的方法
4、Method getMethod(String methodName,Class type)得到本类或父类中的公共的方法对象
构造方法:
1、Constructor[] getDeclaredConstructors()得到公共构造方法对象
2、Constructor[] getConstructors()得到公共构造方法对象
3、Constructor 得到指定参数

3.提高反射效率
(1)简述如何提高反射的效率?
通过setAccessible提高性能
A)setAccessible启用和禁用访问安全检查的开关,值为 true则指示反射对象在使用时应该取消java语言访问检查,值为 false则指示反射对象应该实施java语言访问检查,并不是为true 就能访问false就不能访问。
B)禁止安全检查,可以提高反射的运行速度
(2)什么是(Reflection)反射?其它语言有这种特点吗?

4.反射操作泛型
(1)简述什么是泛型?有哪些作用?
Java中的泛型仅仅是给编译器javac使用的,确保数据的安全性和免去强制类型转换的麻烦,但是一旦编译完成,所有与泛型有关的类型全部擦除。
使用泛型直接读取泛型,是读取不到的,因为反射是操作加载以后的类。
(2)Java新增的数据类型有哪些?
1、ParameterizedType:表示一种参数化的类型,比如Collection,可以获取String信息
2、GenericArrayType:泛型数组类型
3、TypeVariable:各种类型变量的公共父接口
4、WildcardType:代表一种通配符类型表达式

5.注解
(1)简述注解的作用?
1、不是程序本身,可以对程序作出解释
2、可以被其他程序(比如编译器)读取。(注解信息处理流程,是注解和注释的重大区别,如果没有注解信息处理流程,则注解毫无意义)
(2)常见的内置注解有哪些?
1、@Override:标识方法是重写的方法
2、@Deprecated:标识方法不建议使用
3、@SuppressWarrings:用来抑制编译时的警告信息

6.自定义注解
(1)自定义注解的注意事项有哪些?
注解元素必须要有值,我们定义注解元素时,经常使用空字符串,0作为默认值,也经常使用负数表示不存在的含义。
(2)什么叫元注解?
元注解的作用就是负责注解其他注解。在Java中定义了4个标准的meta-annotation类型,它们被用来提高对其他annotation类型做说明。

7.反射读取注解信息
(1)简述ORM什么含义?
对象关系映射
(2)举例说明注解的使用?
使用注解完成类与表结构的映射关系
分享/讲解/扩展思考
点名提问从第一节课到最后一节课分别学到了什么,直到同学们把所有的知识点都说出来并且保证无误。

学习主题:多线程和并发编程
学习目标:
1 掌握实现多线程的第三种方式
2 掌握线程同步的三种方式
3 掌握线程池
4 掌握任务调度
5 重点掌握线程局部,很多框架都使用到这个技术

8.多线程知识回顾
(1)在Java中创建线程的两种方式是什么?
1、继承Thread
2、实现Runnable接口
(2)简述什么是同步与死锁?及线程间通信的方法有哪些?
同步与死锁:
1、同步方法,同步监视器为当前对象this
2、同步代码块(同步监视器/共享资源的对象)
过多的同步就会导致死锁
线程间通信:
1、wait()
2、notify()
3、notifyAll()

9.实现多线程的第三种方式
(1)之前学习实现的多线程的两种方式是什么?有什么缺点?第三种实现多线程的方式是什么?
之前实现多线程的方法是继承Thread和实现Runnable接口
缺点:
1、没有返回值
2、不支持泛型
3、异常必须处理
第三种实现多线程的方式:实现Callable接口,重写call方法

(2)实现Callable接口来实现多线程的好处是什么?
功能更加强大
1、Funture接口可以对具体Runnable、Callable任务的执行结果进行取消、查询是否完成,获取等
2、FutrueTask是Funture接口的唯一实现类
3、FutrueTask同时实现了Runnable,Funture接口。它既可以作为Runnable被线程执行,又可以作为Funture得到Callable的返回值。
(3)写出实现Callable达到多线程的步骤
1.自定义线程类 实现Callable接口
2.重写call方法
3.在测试类中,创建任务(线程)
4.交给任务管理器(FutureTask)
5.创建代理类并启动线程

10.线程同步Lock锁
(1)简述线程同步的三种方式?
1、同步方法
2、同步代码块
3、Lock锁
(2)简述Lock与synchronized的区别?
1、Lock可以提供多种锁方案,更加灵活
2、Java.util.concurrent.lock中的Lock是一个接口,它的实现类是一个Java类,而不是作为语言的特性来实现。

11.线程池
(1)简述什么是线程池?
存放线程的空间
(2)使用线程池有哪些好处?
创建多个线程,放入线程池中,使用时直接获取引用,不使用时放回池中。可以避免频繁创建销毁、实现重复利用。

12.任务调度Task_Timer
(1)简述什么是任务调度?
就是事情在不同时间点或者指定的时间点或者间隔多长时间我去运行这个任务。
(2)请你列举出生活中什么的案例是属于任务调度的?
生活中的闹钟

13.ThreadLocal是什么_JDK底层原理
(1)简述什么是ThreadLocal?
ThreadLocal直译为“本地线程”,其实它就是一容器,用于存放线程的局部变量。
(2)ThreadLocal主要的四个方法是什么?分别表示什么含义?
1、get() 返回当前线程的此线程局部变量的副本中的值
2、initialValue()返回此线程局部变量的当前线程的“初始 值”
3、Remove()删除此线程局部变量的当前线程的值
4、Set() 将当前线程的线程局部变量的副本设置为指定的值

14.ThreadLocal的使用场景
(1)简述ThreadLocal的应用场景?
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值