
JAVA进阶篇
文章平均质量分 91
尚硅谷java教程:https://www.bilibili.com/video/BV1Kb411W75N
狂神java教程:https://www.bilibili.com/video/BV12J41137hu
万里顾—程
我变得自信有趣,
允许别人踏入我的生活;
我睡的越来越早,
开始在乎前途和未来,
我知道那个我回来了!
展开
-
JAVA多线程——线程,进程,多线程
JAVA多线程——线程,进程,多线程进程(Process)进程是执行程序的一次执行过程,是一个动态的概念。是由系统资源来分配。程序是一个静态的概念,程序运行起来才有线程。程序运行时,即使没有自己创建线程,后台也会有多个线程,如主线程main(),gc线程(守护线程);在一个进程中,如果开辟了多个线程,线程的运行由调度器CPU安排调度,CPU是与操作系统紧密相关的,先后顺序是不能人为干预的。线程(Thread)线程就是一个独立执行的路径,通常在一个进程中可以包含多个线程,一个进程中至少包含一个线程原创 2020-08-26 12:03:01 · 222 阅读 · 0 评论 -
JAVA多线程——创建线程的方式
JAVA多线程——创建线程三种创建方式继承Thread自定义一个线程类继承Thread类重写run方法,编写线程执行体创建线程对象,调用start()方法启动线程不建议使用,java是单继承有局限性package com.peng.demon01;import javax.swing.*;//创建线程方式一:继承Threaf类,重写run方法,调用start开启线程public class TestThread01 extends Thread{ @Override原创 2020-08-27 22:26:20 · 443 阅读 · 0 评论 -
JAVA多线程——lambda表达式
JAVA多线程——lambda表达式lambda表达式其实质属于函数式编程lambda表达式的作用避免匿名内部类定义过多去掉了一堆没有意义的代码,只留下核心的逻辑,让代码简洁用lambda表达式和用内部类的区别package com.peng.lambda;public class TestLambda1 { //静态内部类Like2 用静态内部类的方法操作 static class Like2 implements ILike { @Ove原创 2020-08-29 12:01:25 · 776 阅读 · 0 评论 -
JAVA多线程——静态代理
JAVA多线程——静态代理package com.peng.demon03;/*静态代理总结:真实对象(target)和代理对象(weddingCompany)都要实现同一个接口代理对象要代理真实角色* */public class StactiProxy { public static void main(String[] args) { //同理,Thread也是一个代理,实现Runnable接口,代理能做更多的事情 new Thread( ()-&g原创 2020-08-30 10:19:52 · 276 阅读 · 0 评论 -
JAVA多线程——线程状态和线程方法
JAVA多线程——线程状态和线程方法线程状态创建状态:Thread t = new Thread ()就绪状态: 调用start()方法,线程立即进入就绪状态,但不立即调度执行运行状态:通过CPU进行调度执行,线程才执行线程体的代码块阻塞状态: 调用sleep,wait或同步锁定时,进入阻塞状态,阻塞状态解除后,线程重新进入就绪状态,等待CPU调度死亡状态:一旦进入死亡状态,就不能再次启动package com.peng.demon05;//观察线程状态pu原创 2020-09-01 17:06:46 · 355 阅读 · 0 评论 -
JAVA多线程——守护线程
JAVA多线程——守护线程线程分为用户线程(如main线程)和守护线程虚拟机必须确保用户线程执行完成虚拟机不用等待守护线程执行完毕守护线程的作用:后台记录操作,日志,监控内存,垃圾回收,等待机制等package com.peng.demon04;//测试守护线程public class TestDaemon { public static void main(String[] args) { Gad gad = new Gad();原创 2020-09-01 17:39:18 · 1871 阅读 · 2 评论 -
JAVA多线程——线程同步机制,同步方法和同步块
JAVA多线程——线程同步机制,同步方法和同步块并发:同一个对象被多个线程同时操作线程同步:处理多线程问题时,多个线程访问同一个对象,并且某个对象还想修改这个线程。这时候就需要线程同步。线程同步其实就是一种等待机制,多个需要同时访问此对象的线程进入这个对象的等待池形成队列,等待前面线程使用完毕,下一个线程再使用。锁机制:由于同一进程的多个线程共享同一块存储空间,在带来方便的同时,也带来的访问冲突问题,为了保证数据在方法中被访问的正确性,在访问时加入锁机制(synchronized),当一个线程获得对象原创 2020-09-02 14:30:53 · 2252 阅读 · 0 评论 -
JAVA多线程——JUC并发包
JAVA多线程——JUC包JUC(java,util,concurrent)并发包,并发包中包含了许多并发编程中需要用到的类package com.peng.cny;import java.util.concurrent.CopyOnWriteArrayList;//测试JUC包下的安全类型的集合public class TestJUC { public static void main(String[] args) { //CopyOnWriteArrayList这原创 2020-09-02 21:51:33 · 387 阅读 · 0 评论 -
JAVA多线程——死锁DeadLock
JAVA多线程——死锁死锁问题:多个线程互相拿着对方需要的资源,然后形成僵持package com.peng.demon06;import com.sun.deploy.security.SelectableSecurityManager;//死锁:多个线程互相拿着对方需要的资源,然后形成僵持public class DeadLock { public static void main(String[] args) { Makeup g1 = new Makeup(0,原创 2020-09-02 22:49:25 · 405 阅读 · 3 评论 -
JAVA多线程——锁Lock
JAVA多线程——锁LockLock是一个接口,是在JUC包下的,Lock接口是控制多个线程对共享资源进行访问的工具。每次只能有一个线程拿到Lock对象的锁,线程开始访问共享资源前应先获得Lock对象。不加锁,线程不安全package com.peng.lock;import java.util.concurrent.locks.ReentrantLock;//测试lock锁public class TestLock { public static void main(String[原创 2020-09-03 14:31:58 · 1269 阅读 · 1 评论 -
JAVA多线程——线程协作(生产者消费者问题)
JAVA多线程——线程协作生产者消费者问题生产者消费者问题:这是一个线程同步问题,生产者消费者共享同一个资源,并且生产者消费者之间相互依赖,互为条件。对于生产者,没有生产产品之前,要通知消费者等待,而生产了产品之后,又要放到缓存区,通知消费者来消费对于消费者,在消费之后,要通知生产者已经结束消费,需要生产新的产品以供消费在生产者消费者问题中,仅有的synchronized是不够的synchronized实现了同步,但不能用来实现不同线程之间的通信解决线程之间通信问题的方法wait()原创 2020-09-04 10:41:22 · 414 阅读 · 2 评论 -
JAVA多线程——线程池的使用
JAVA多线程——线程池问题:经常创建和销毁使用量特别大的资源时,比如并发情况下的线程,对性能影响很大。解决:提前创建好多个线程,放入线程池中,使用时直接获取,使用完放回池中。可以避免频繁创建和销毁、实现重复利用。好处:提高响应速度(减少了创建新线程的时间)减低资源消耗(重复利用线程池中的线程)便于线程管理可以设置线程池的属性corePoolSize:核心池的大小maximumPoolSize: 最大线程数keepAliveTime:线程没有任务时最多保持多久时间后会终止原创 2020-09-04 14:24:02 · 366 阅读 · 0 评论 -
JAVA常用类——String的常用方法概述
String的常用方法简单方法:类型 方法 方法作用int length(): 返回字符串长度 return value.lengthchar charAt(int index): 返回某索引处的字符 return value[index]boolean isEmpty(): 判断是否是空字符串 return value.length == 0String toLowerCase原创 2020-09-12 10:31:10 · 320 阅读 · 0 评论 -
JAVA常用类——String类详细概述
JAVA常用类——String类概述String类:代表字符串String是一个final类,代表不可变的字符序列,也不可被继承String对象的字符内容是存储在一个字符数组value[]中的String类实现了Serializable接口,表示字符串是支持可序列化的 实现了Comparable接口,表示String可以比较大小String字符串不可变的体现当对字符串重新赋值时,需要重新指定赋值区域,不能使用原有的字符数组赋值当对现有的字符串进行连接操作时原创 2020-09-12 12:58:09 · 246 阅读 · 0 评论 -
JAVA常用类——StringBuffer和StringBuilder概述
JAVA常用类——StringBuffer和StringBuilder概述String StringBuffer StringBuilder的异同:String 不可变的字符序列 底层使用char[]存储StringBuffer 可变的字符序列 让线程安全,但效率低 底层使用char[]存储StringBuilder 可变的字符序列 让线程不安全,但效率高 底层使用char[]存效率对比 StringBuil原创 2020-09-13 12:58:45 · 224 阅读 · 0 评论 -
JAVA常用类——JDK8之前的日期时间API的测试
JDk8日期和时间的测试时间戳System类提供了currentTimeMillis()方法用来返回当前时间与1970年1月1日0时0分0秒之间以毫秒为单位的时间差,这个时间差就是时间戳两个Date类的测试两个Date类的测试 java.util.Date类 java.sql.Date类1.java.util.Date类两个构造器的使用构造器一 Date()//创建了一个对应当前时间Date的对象构造器二 Date(时间戳)//创建指定毫秒数的Date对象两个原创 2020-09-14 09:24:01 · 286 阅读 · 0 评论 -
Java进阶——网络编程
JAVA——网络编程文章目录JAVA——网络编程计算机网络网络通信的要素IPIP地址的分类测试IP地址类InetAddressg端口端口分类端口类 InetSocketAddress测试通信协议TCP/UDP协议Socket(套接字)TCP编程实现发送消息TCP编程实现文件上传UDP编程循环发送/接收消息实现双向聊天URLURL下载网络资源网络编程的本质网络编程的本质是两个设备之间的数据交换,当然,在计算机网络中,设备主要指计算机网络编程的目的直接或间接的通过网络协议与其他计算机实现数据交换原创 2021-01-25 13:17:32 · 250 阅读 · 0 评论 -
Java进阶——注解和反射
文章目录Java基础——注解和反射1、注解1.1、什么是注解(Annotation)1.2、内置注解1.3、自定义注解和元注解(meta-annotation)2、反射1、反射和反射机制2、CLass类3、哪些类型可以有Class对象4、类加载理解5、类加载器6、通过反射动态的创建对象7、反射操作注解Java基础——注解和反射1、注解1.1、什么是注解(Annotation)从JDK5开始,Java增加对元数据的支持,也就是注解,注解与注释是有一定区别的,可以把注解理解为代码里的特殊标记,注解的作原创 2021-03-26 18:37:55 · 6814 阅读 · 4 评论 -
JAVA常用类——JDK8中新日期时间API的测试
文章目录JAVA常用类——JDK8中新日期时间API的测试1、新日期时间API出现的背景2、新时间日期时间API3、LocalDate、LocalTime、LocalDateTime的使用4、Instant 瞬时5、日期时间的格式化和解析JAVA常用类——JDK8中新日期时间API的测试1、新日期时间API出现的背景如果我们可以跟别人说:“我们在1502643933071见面,别晚了!”那么就再简单不过了。但是我们希望时间与昼夜和四季有关,于是事情就变复杂了。JDK 1.0中包含了一个java.uti原创 2021-10-03 21:55:12 · 182 阅读 · 0 评论 -
JAVA常用类——Java 比较器Comparable 和 Comparator
文章目录JAVA常用类——Java 比较器1、自然排序 Comparable1.1、Comparable 接口的使用1.2、自定义类实现Comparable 自然排序2、定制排序 ComparatorJAVA常用类——Java 比较器Java 实现对象排序的方式有两种:自然排序:java.lang.Comparable定制排序:java.util.Comparator说明:Java中的对象,正常情况下,只能进行比较: ==或!=。不能使用 〉或〈 ,但是在开发场景中,我们需要对多个对象进行排序原创 2021-10-04 11:51:34 · 367 阅读 · 0 评论 -
Java进阶——枚举类
文章目录Java进阶——枚举类1、枚举类的理解和实现2、自定义枚举类3、使用 eunm 关键字定义枚举类4、Enum 类中主要方法5、使用 enum 关键字定义的枚举类实现接口的情况Java进阶——枚举类1、枚举类的理解和实现枚举类的理解1、类的对象只有有限个,并且是确定的,我们称此类为枚举类。2、当需要定义一组常量时,建议使用枚举类。3、如果枚举类中只有一个对象,则可以作为单例模式的实现方式。枚举类的实现jdk1.5 之前需要自定义枚举类jdk1.5 新增的 enum 关键字用于原创 2021-10-05 11:12:55 · 214 阅读 · 0 评论 -
Java进阶——集合
Java进阶——集合框架1、集合框架简介集合可以看作是一种容器,用来存储对象信息。所有集合类都位于java.util包下。Java集合框架(Java Collections Framework,JCF)是为表示和操作集合而规定的一种统一的标准的体系结构。 任何集合框架都包含三大块内容:对外的接口、接口的实现和对集合运算的算法。接口:是代表集合的抽象数据类型。例如 Collection、List、Set、Map 等。之所以定义多个接口,是为了以不同的方式操作集合对象实现(类):是集合接口的具体实现原创 2021-10-17 11:10:59 · 312 阅读 · 0 评论 -
Java 进阶——泛型
文章目录Java 进阶——泛型1、简介2、泛型使用实例3、自定义泛型结构3.1、自定义泛型类和泛型接口3.2、自定义泛型方法4、通配符的使用Java 进阶——泛型1、简介泛型的设计背景集合容器类在设计阶段/声明阶段不能确定这个容器到底实际存的是什么类型的对象,所以在JDK1.5之前只能把元素类型设计为Object,JDK1.5之后使用泛型来解决。因为这个时候除了元素的类型不确定,其他的部分是确定的,例如关于这个元素如何保存,如何管理等是确定的,因此此时把元素的类型设计成一个参数,这个类型参数叫做原创 2021-10-20 09:53:13 · 405 阅读 · 1 评论 -
Java进阶——IO 流
文章目录Java进阶——IO 流1、File 类的使用1.1、File 常用构造器1.2、路径分隔符1.3、File 的常用方法2、IO流原理及流的分类2.1、IO流原理2.2、流的分类3、IO流的体系结构4、节点流4.1、FileReader 读入数据的操作4.2、FileWriter 写出数据的操作4.3、FileReader 和 FileWriter 实现文本文件的复制4.4、FileInputStream 和 FileOutputStream 实现非文本文件的复制5、缓存流5.1、BufferedI原创 2021-10-24 10:35:25 · 311 阅读 · 0 评论