随笔分类 - Java
摘要:集合框架的概述 1.集合是对多个数据进行存储操作的结构,简称Java容器。 说明:此时的存储,主要指的是内存层面的存储,不涉及到持久化的存储(.txt,.jpg,.avi,数据库中) 集合都是以数组和链表为基础实现的。 集合框架 | Collection接口:单列集合,用来存储一个一个的对象 | L
阅读全文
摘要:Annotation 其实就是代码里的特殊标记,这些标记可以在编译,类加载,运行时被读取,并执行相应的处理。通过使用 Annotation,程序员可以在不改变原有逻辑的情况下,在源文件中嵌入一些补充信息。代码分析工具、开发工具和部署工具可以通过这些补充信息进行验证或者进行部署。 Annotation
阅读全文
摘要:1.枚举类的理解:类的对象只有有限个,确定的2.当需要定义一组常量时,强烈建议使用枚举类3.如果枚举类中只有一个对象,则可以作为单例模式的实现方式 package com.klvchen.java; public class SeasonTest1 { public static void main
阅读全文
摘要:Java 实现对象排序的方式有两种:自然排序: java.lang.Comparable定制排序: java.util.Comparator 说明: Java中的对象,正常情况下,只能进行比较: == 或 !=。不能使用〉或<的但是在开发场景中,我们需要对多个对象进行排序,言外之意,就需要比较对象的
阅读全文
摘要:StringBuffer类 stringBuffer 类不同于 String,其对象必须使用构造器生成。有三个构造器: stringBuffer(): 初始容量为16的字符串缓冲区 StringBuffer(int size): 构造指定容量的字符串缓冲区 StringBuffer(String s
阅读全文
摘要:背景:经常创建和销毁、使用量特别大的资源,比如并发情况下的线程,对性能影响很大。 思路:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建销毁、实现重复利用。类似生活中的公共交通工具。 好处: 提高响应速度(减少了创建新线程的时间) 降低资源消耗(重复利用线程池中线程
阅读全文
摘要:与使用Runnable相比,Callable功能更强大些 相比run()方法,可以有返回值 方法可以抛出异常 支持泛型的返回值 需要借助 FutureTask 类,比如获取返回结果 Future接口 可以对具体 Runnable、Callable 任务的执行结果进行取消、查询是否完成、获取结果等。
阅读全文
摘要:线程通信的例子:使用两个线程打印1-180。线程1,线程2交替打印 涉及到的三个方法:wait():一旦执行此方法,当前线程就进入阻塞状态,并释放同步监视器。notify():一旦执行此方法,就会唤醒被wait的一个线程。如果有多个线程被wait,就唤醒优先级高的那个。notifyALL():一旦执
阅读全文
摘要:Lock(锁) 从 JDK 5.0开始,Java 提供了更强大的线程同步机制——通过显式定义同步锁对象来实现同步。同步锁使用Lock对象充当。 java.util.concurrent.locks.Lock 接口是控制多个线程对共享资源进行访问的工具。锁提供了对共享资源的独占访问,每次只能有一个线程
阅读全文
摘要:死锁 不同的线程分别占用对方需要的同步资源不放弃,都在等待对方放弃自己需要的同步资源,就形成了线程的死锁出现死锁后,不会出现异常,不会出现提示,只是所有的线程都处于阻塞状态,无法继续 解决方法 专门的算法、原则尽量减少同步资源的定义尽量避免嵌套同步 例子一: package com.klvchen.
阅读全文
摘要:同步方法解决线程安全问题 如果操作共享数据的代码完整的声明在一个方法中,我们不妨将此方法声明同步的。 同步方法的总结:1.同步方法仍然涉及到同步监视器,只是不需要我们显式的声明。2.非静态的同步方法,同步监视器是:this静态的同步方法,同步监视器是:当前类本身 使用实现Runnable接口创建多线
阅读全文
摘要:Thread类的有关方法 void start(): 启动线程,并执行对象的run()方法 run(): 线程在被调度时执行的操作 String getName(): 返回线程的名称 void setName(String name): 设置该线程名称 static Thread currentTh
阅读全文
摘要:线程的生命周期 JDK 中用 Thread.state 类定义了线程的几种状态要想实现多线程,必须在主线程中创建新的线程对象。Java语言使用 Thread 类及其子类的对象来表示线程,在它的一个完整的生命周期中通常要经历如下的五种状态: 新建: 当一个Thread类或其子类的对象被声明并创建时,新
阅读全文
摘要:程序(program) 是为完成特定任务、用某种语言编写的一组指令的集合。即指一段静态的代码,静态对象。 进程(process) 是程序的一次执行过程,或是正在运行的一个程序。是一个动态的过程:有它自身的产生、存在和消亡的过程。--生命周期,如: 运行中的QQ,运行中的MP3播放器 程序是静态的,进
阅读全文
摘要:如何自定义异常类? 继承于现有的异常结构: RuntimeException, Exception 提供全局常量: serialVersionUID 提供重载的构造器 throw 和 throws 区别:throw 表示抛出一个异常类的对象,生成异常对象的过程。声明在方法体内。throws 属于异常
阅读全文
摘要:接口的应用:工厂模式 工厂模式:实现了创建者与调用者的分离,即将创建对象的具体过程屏蔽隔离起来,达到提高灵活性的目的。其实设计模式和面向对象设计原则都是为了使得开发项目更加容易扩展和维护,解决方式就是一个"分工"。社会的发展也是这样,分工越来越细。原始社会的人:人什么都要会,自己种,自己打猎,自己织
阅读全文
摘要:概述:代理模式是Java开发中使用较多的一种设计模式。代理设计就是为其他对象提供一种代理以控制对这个对象的访问。 应用场景: 安全代理: 屏蔽对真实角色的直接访问。I远程代理: 通过代理类处理远程方法调用(RMI)延迟加载: 先加载轻量级的代理对象,真正需要再加载真实对象。比如你要开发一个大文档查看
阅读全文
摘要:接口详解一 一方面,有时必须从几个类中派生出一个子类,继承它们所有的属性和方法。但是,Java 不支持多重继承。有了接口,就可以得到多重继承的效果 另一方面,有时必须从几个类中抽取出一些共同的行为特征,而它们之间又没有is-a的关系,仅仅是具有相同的行为特征而已。例如:鼠标、键盘、打印机、扫描仪、摄
阅读全文
摘要:抽象类体现的就是一种模板模式的设计,抽象类作为多个子类的通用模板,子类在抽象类的基础上进行扩展、改造,但子类总体上会保留抽象类的行为方式。 解决的问题:当功能内部一部分实现是确定的,一部分实现是不确定的。这时可以把不确定的部分暴露出去,让子类去实现。换句话说,在软件开发中实现一个算法时,整体步骤很固
阅读全文
摘要:final:最终的 final 可以用来修饰的结构: 类、方法、变量 final 用来修饰一个类: 此类不能被其他类所继承。比如: String类、System类、StringBuffer类 final 用来修饰方法。表明此方法不可以被重写比如:Object 类中 getclass(); final
阅读全文