自定义博客皮肤VIP专享

*博客头图:

格式为PNG、JPG,宽度*高度大于1920*100像素,不超过2MB,主视觉建议放在右侧,请参照线上博客头图

请上传大于1920*100像素的图片!

博客底图:

图片格式为PNG、JPG,不超过1MB,可上下左右平铺至整个背景

栏目图:

图片格式为PNG、JPG,图片宽度*高度为300*38像素,不超过0.5MB

主标题颜色:

RGB颜色,例如:#AFAFAF

Hover:

RGB颜色,例如:#AFAFAF

副标题颜色:

RGB颜色,例如:#AFAFAF

自定义博客皮肤

-+
  • 博客(19)
  • 收藏
  • 关注

原创 反射调用运行时类的指定结构

1.调用指定方法通过反射,调用类中的方法,通过Method类完成。步骤:1.通过Class类的getMethod(String name,Class…parameterTypes)方法取得一个Method对象,并设置此方法操作时所需要的参数类型。2.之后使用Object invoke(Object obj, Object[] args)进行调用,并向方法中传递要设置的obj对象的参数信息。说明:1.Object 对应原方法的返回值,若原方法无返回值,此时返回null2.若原方法若为静态方法,

2020-07-10 22:50:19 73

原创 反射创建对象

1.根据全类名获取对应的Class对象String name = “atguigu.java.Person";Class clazz = null;clazz = Class.forName(name);2.调用指定参数结构的构造器,生成Constructor的实例Constructor con = clazz.getConstructor(String.class,Integer.class);3.通过Constructor的实例创建对应类的对象,并初始化类属性Person p2 = (Pe

2020-07-10 22:36:10 113

原创 获取反射Class类的实例

1前提:若已知具体的类,通过类的class属性获取,该方法最为安全可靠,程序性能最高实例:Class clazz = String.class;2前提:已知某个类的实例,调用该实例的getClass()方法获取Class对象实例:Class clazz = “www.atguigu.com”.getClass();3前提:已知一个类的全类名,且该类在类路径下,可通过Class类的静态方法forName()获取,可能抛出ClassNotFoundException实例:Class claz

2020-07-10 22:31:46 210

原创 反射获取运行时类的完整结构

Field、Method、Constructor、Superclass、Interface、Annotation1 实现的全部接口2 所继承的父类3 全部的构造器4 全部的方法5 全部的Field使用反射可以取得:1.实现的全部接口public Class<?>[] getInterfaces()确定此对象所表示的类或接口实现的接口。2.所继承的父类public Class<? Super T> getSuperclass()返回表示此 Class 所表示的实

2020-07-10 22:25:31 127

原创 Java反射功能

一 作用在运行时判断任意一个对象所属的类在运行时构造任意一个类的对象在运行时判断任意一个类所具有的成员变量和方法在运行时获取泛型信息在运行时调用任意一个对象的成员变量和方法在运行时处理注解生成动态代理二 作用java.lang.Class:代表一个类java.lang.reflect.Method:代表类的方法java.lang.reflect.Field:代表类的成员变量java.lang.reflect.Constructor:代表类的构造器参考1 尚硅谷...

2020-07-03 12:56:32 104

原创 JAVA线程通信 生产者/消费者用例

/** * 线程通信的应用:经典例题:生产者/消费者问题 * * 生产者(Productor)将产品交给店员(Clerk),而消费者(Customer)从店员处取走产品, * 店员一次只能持有固定数量的产品(比如:20),如果生产者试图生产更多的产品,店员 * 会叫生产者停一下,如果店中有空位放产品了再通知生产者继续生产;如果店中没有产品 * 了,店员会告诉消费者等一下,如果店中有产品了再通知消费者来取走产品。 * * 分析: * 1. 是否是多线程问题?是,生产者线程,消费者线程 *

2020-05-22 17:38:33 173

转载 JAVA线程通信

/** * 线程通信的例子:使用两个线程打印 1-100。线程1, 线程2 交替打印 * * 涉及到的三个方法: * wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。 * notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个。 * notifyAll():一旦执行此方法,就会唤醒所有被wait的线程。 * * 说明: * 1.wait(),notify(),notifyAll()三个方法必须使用在同步代码块或

2020-05-22 17:29:29 75

转载 JAVA线程Lock锁

import java.util.concurrent.locks.ReentrantLock;/** * 解决线程安全问题的方式三:Lock锁 --- JDK5.0新增 * * 1. 面试题:synchronized 与 Lock的异同? * 相同:二者都可以解决线程安全问题 * 不同:synchronized机制在执行完相应的同步代码以后,自动的释放同步监视器 * Lock需要手动的启动同步(lock()),同时结束同步也需要手动的实现(unlock()) *

2020-05-22 16:10:14 96

原创 JAVA线程死锁

/** * 演示线程的死锁问题 * * 1.死锁的理解:不同的线程分别占用对方需要的同步资源不放弃, * 都在等待对方放弃自己需要的同步资源,就形成了线程的死锁 * * 2.说明: * 1)出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续 * 2)我们使用同步时,要避免出现死锁。 * * @author shkstart * @create 2019-02-15 下午 3:20 */public class ThreadTest { publi

2020-05-22 15:22:23 117

原创 JAVA线程安全单例设计模式之懒汉式

class Bank{ private Bank(){} private static Bank instance = null; public static Bank getInstance(){ //方式一:效率稍差// synchronized (Bank.class) {// if(instance == null){// instance = new Bank();//

2020-05-22 15:05:06 110

原创 JAVA线程同步方法

synchronized放在方法声明中,表示整个方法为同步方法。例如:public synchronized void show (String name){….}案例 Runnable:class Window3 implements Runnable { private int ticket = 100; @Override public void run() { while (true) { show();

2020-05-22 14:45:22 88

原创 JAVA线程同步代码块

语法:synchronized (同步监视器){ // 需要被同步的代码;}说明:操作共享数据的代码,即为需要被同步的代码共享数据,多个线程操作的变量同步监视器,俗称锁,任何一个对象都可以充当锁。要求, 各个线程使用同一个锁对象案例 Runnable:class Window1 implements Runnable{ private int ticket = 100; @Override public void run() { while(

2020-05-22 14:02:57 129

原创 JAVA线程的生命周期

标题JDK中用Thread.State类定义了线程的五种状态新建: 当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态就绪:处于新建状态的线程被start()后,将进入线程队列等待CPU时间片,此时它已具备了运行的条件,只是没分配到CPU资源运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态, run()方法定义了线程的操作和功能阻塞:在某种特殊情况下,被人为挂起或执行输入输出操作时,让出 CPU 并临时中止自己的执行,进入阻塞状态死亡:线程完成了它的全

2020-05-22 11:10:25 177

原创 JAVA线程的优先级

线程的优先级等级MAX_PRIORITY:10MIN _PRIORITY:1NORM_PRIORITY:5涉及的方法getPriority() :返回线程优先值setPriority(int newPriority) :改变线程的优先级说明线程创建时继承父线程的优先级低优先级只是获得调度的概率低,并非一定是在高优先级线程之后才被调用参考1 尚硅谷...

2020-05-22 10:58:51 104

原创 JAVA线程的方法

void start()启动线程,并执行对象的run()方法run()线程在被调度时执行的操作String getName()返回线程的名称void setName(String name)设置该线程名称static Thread currentThread()返回当前线程。在Thread子类中就是this,通常用于主线程和Runnable实现类static void yield()线程让步暂停当前正在执行的线程,把执行机会让给优先级相同或更高的线程若队列中没有同优先级的线程,忽

2020-05-22 10:40:43 66

原创 JAVA线程的创建

public class ThreadTest { public static void main(String[] args) { MyThread myThread = new MyThread(); myThread.start(); }}/** * 多线程的创建,方式一:继承Thread类 * 1创建一个继承Tread的子类 * 2重写run() * 3创建实例对象 * 4通过此对象调用start() * @author kanglin */class MyThre

2020-05-15 21:43:19 113

原创 JAVA运算符

目录1 算术运算符2 赋值运算符3 比较运算符(关系运算符)4 逻辑运算符5 位运算符6 三元运算符1 算术运算符算术运算符的注意问题如果对负数取模,可以把模数负号忽略不记,如:5%-2=1。 但被模数是负数则不可忽略。此外,取模运算的结果不一定总是整数。对于除号“/”,它的整数除和小数除是有区别的:整数之间做除法时,只保留整数部分而舍弃小数部分。“+”除字符串相加功能外,还能把非字符串转换成字符串.2 赋值运算符符号:=1当“=”两侧数据类型不一致时,可以使用自动类型转换或使用

2020-05-11 16:15:16 102

原创 JAVA数据类型

1 整数类型:byte、short、int、long类 型占用存储空间表数范围byte1字节=8bit位-128 ~ 127short2字节-215 ~ 215 - 1int4字节-231 ~ 231 - 1 (约21亿)long8字节-263 ~ 263 - 1java的整型常量默认为 int 型,声明long型常量须后加‘l’或‘L’2 浮点类型:float、double类 型占用存储空间表数范围单精度

2020-05-11 14:32:54 83

原创 阿里云OSS对象存储JAVA服务端使用

1. 开通 OSS 服务官方文档2.创建存储空间官方文档3.安装SDK官方文档4.上传文件官方文档5.获取文件下载地址官方文档6.删除文件官方文档

2020-05-07 17:56:24 477

空空如也

空空如也

TA创建的收藏夹 TA关注的收藏夹

TA关注的人

提示
确定要删除当前文章?
取消 删除