
java
章若楠楠朋友
这个作者很懒,什么都没留下…
展开
-
线程通信wait()、notify()
一、线程通信(线程交互):当多个线程完成某些特定任务的时候,线程之间有时也需要一定的通信,即线程通信例如:模拟银行账户,用户A不断往该账户中存钱,最多存储10000元,若账户己满,需要通知用户B取钱用户B不断从该账户中取钱,若余额不足时,需要通知用户A存钱使用两个线程打印1-100,线程1、线程2 交替打印二、在java.Long.Object类中【等待唤醒机制】wait():使当前"同步监视器"上的线程进入等待状态,同时释放锁notify()/notifyAll():唤醒当前"同步监视器原创 2023-01-17 20:13:20 · 264 阅读 · 0 评论 -
线 程 同 步、线程的死锁问题
线程同步:模拟售票程序出现问题: 当多个线程同时访问共享数据时,产生无序、重复、超额售票等多线程安全问题解决:将多个线程需要访问的共享数据,包装起来视为一个整体,确保一次只有一个线程执行流访问共享数据Java为上述问题提供了相应的解决办法: 1、同步代码块 synchronized(同步监视器){ //多个线程需要访问的共享数据 } 同步监视器:俗称“锁” ,可以使用任意类型的对象充当。但是必原创 2023-01-17 16:08:04 · 862 阅读 · 0 评论 -
线程的优先级
线程的优先级(1-10):默认的优先级为:5;优先级高并不意味着线程一定会优先执行,优先级高可以更高概率的获取cpu的资源setPriority():设置线程优先级getPriority():获取线程优先级MAX_PRIORITY : 10MIN_PRIORITY : 1NORM_PRIORITY :5原创 2023-01-15 21:45:27 · 535 阅读 · 0 评论 -
线程的生命周期
线程的生命周期原创 2023-01-15 21:29:05 · 85 阅读 · 0 评论 -
线程的控制
线程的控制sleep(Long millis):使当前线程进入睡眠状态(是一个静态方法)join() / join(Long millis):是当前线程进入阻塞状态(是一个实例方法)interrupt():中断阻塞状态的线程isAlive():判断当前线程是否处于存活状态yield():线程让步原创 2023-01-15 20:18:15 · 272 阅读 · 0 评论 -
结束线程---使用通知的方式
结束线程:采用通知的方式,通常在线程执行体中写一些持续执行的语句,比如说循环,因此,控制住循环,就可以控制住当前的线程在main方法中创建并后动两个线程·第一个线程循环随机打印1oo以内的整数﹐直到第二个线程从键盘读取了Q命令·原创 2023-01-15 18:48:24 · 298 阅读 · 0 评论 -
多线程---创建执行线程的方式之二
一、创建执行线程的方式二:①声明一个类实现Runnable 接口②实现接口中的run()方法,同时编写线程执行体③创建该实现类的实例④创建Thread类的实例⑤将实现类的实例作为参数传递给Thread的构造器⑥调用Thread的start()方法启动线程,默认调用run()方法二、创建执行线程的两种方式的区别?①实现Runnable接口的方式解决了Java中单继承的局限性②若多个线程需要访问共享数据时,首选使用 实现Runnable接口的方式原创 2023-01-14 12:11:35 · 97 阅读 · 0 评论 -
多线程原理及创建方式之一
一、进程:为了完成某项特定的任务,使用某种语言,编写一组指令的集合进程:正在进行中的程序线程:在一个进程中,执行的一套功能流程,称为线程 在一个进程中,执行的多套功能流程,成为多线程二、为什么使用多线程?抢占式策略系统:系统会为每个执行任务的线程分配一个很小的时间段﹐当该时间段用完后﹐系统会强制剥夺其 cpu 的执行权交给其他线程完成任务1、提高效率:尽可能的利用cpu的资源2、增强用户体验JVM:多线程main方法称为主线程三、线程的常用方法currentThread原创 2023-01-14 10:34:05 · 94 阅读 · 0 评论 -
java.io.File类
file1.renameTo(file2):file1必须存在,file2必须不存在。如果目录里面有文件删除目录返回false,没有则返回true。该方法获取的是该目录中所有的文件和目录的列表名(名称)renameTo(File newName):重命名。若hello.txt不存在则返回false。若删除的是目录,则需要将目录中所有的内容清空。mkdirs:不管存不存在,直接创建目录。若两个路径都存在也返回false。前提是所见目录的上级目录存在。获取该目录下文件的对象。原创 2023-01-10 00:14:02 · 365 阅读 · 0 评论 -
IO流_转换流与编码解码
【代码】IO流_转换流与编码解码。原创 2023-01-09 20:23:16 · 135 阅读 · 0 评论 -
IO流(控制台IO与打印流)
标准输入流:System.in是单例的:IO流(控制台IO与打印流)原创 2023-01-09 10:06:06 · 97 阅读 · 0 评论 -
对象的序列化
对象流:ObjectInputStream & ObjectOutputStream1、对象的序列化:将内存中的对象永久的以二进制形式保存到磁盘中①创建节点流对象②(可选)创建缓冲流包装对应节点流,用于提高效率③创建对象流包装对应的缓冲流,用于完成序列化④通过writeXxx()方法完成序列化⑤需要序列化对象的类必须实现java.io.Serializable接口⑥提供序列号private static final Long SerialVersionUID=(long型的id)L;2、原创 2023-01-07 23:56:21 · 319 阅读 · 0 评论 -
IO流的包装与链接、缓冲流
缓冲流原创 2023-01-06 23:32:42 · 142 阅读 · 0 评论 -
IO流、文本文件和非文本文件的读、写、复制
②:按数据类型不同:字节流、字符流(字符流用于操作文本文件:txt .java)(字节流用于操作非文本文件 .avi .jpg .mp3)①:按流向不同:输入流、输出流(以程序为主体)抽象基类 节点流。③:按角色不同:节点流、处理流。二、IO流的体系结构。原创 2023-01-05 20:56:42 · 176 阅读 · 0 评论 -
Collections工具类
操作集合的工具类:CollectionsEnumeration:(了解)古老的集合和古老的迭代器。Vector:是一个古老的实现,是线程安全的,因此效率低。操作集合的工具类:Collections。junit4默认不接收键盘输入。原创 2023-01-03 22:07:54 · 76 阅读 · 0 评论 -
操作properties属性文件
操作properties属性文件原创 2023-01-03 19:07:05 · 117 阅读 · 0 评论 -
遍历Map的三种方式
Map的遍历方式一、获取Map中所有的key组成的set;需用到的方法:keySet()方法Map的遍历方式二、获取Map中所有的value组成的Collection;需用到的方法:values()方法Map的遍历方式三、获取Map中所有的Entry(是Map的内部类,一个Entry对应着一个key和一个value)组成的Set ;用到的方法:entrySet()原创 2023-01-03 10:34:21 · 273 阅读 · 0 评论 -
Map系列映射集合
Map系列映射集合、Map常用方法原创 2023-01-01 23:09:58 · 145 阅读 · 0 评论 -
集合的遍历
1、增强for循环 for(被遍历集合中元素的数据类型 变量名 : 被遍历的集合){ }2、使用Iterator迭代器①、获取当前集合的迭代器②、通过hasNext()、next()方法配合遍历集合原创 2023-01-01 16:12:52 · 91 阅读 · 0 评论 -
Comparator定制排序
【代码】Comparator定制排序。Comparator:定制排序 ①声明一个类实现Comparator接口 ②实现接口中的抽象方法compare(Object o1,Object o2) ③将该实现类的实例作为参数传递给TreeSet的构造器原创 2022-12-30 23:23:26 · 219 阅读 · 0 评论 -
TreeSet
①需要添加到TreeSet 集合中对象的类,实现Comparable接口。②实现接口中的抽象方法compareTo(Object o)>Comparable:自然排序。TreeSet:拥有指定的排序方式。原创 2022-12-30 23:08:55 · 102 阅读 · 0 评论 -
LinkedHashSet
LinkedHashSet:是HashSet的子类,相似于HashSet多了链表维护元素的顺序,遍历效率高于HashSet 增删效率低于HashSet原创 2022-12-30 22:30:06 · 192 阅读 · 0 评论 -
HashSet
【代码】HashSet。原创 2022-12-30 18:32:51 · 139 阅读 · 0 评论 -
LinkedList常用方法
【代码】LinkedList常用方法。原创 2022-12-29 23:07:37 · 406 阅读 · 0 评论 -
List常用方法
Object set(int index, Object ele):将index索引位置的元素修改为ele。>int indexOf(Object obj):查找某个元素的索引位置,找到返回索引值,找不到返回-1。>void add(int index, Object ele):在index索引位置添加元素ele。>Object remove(int index):删除指定索引位置的元素。>Object get(int index):获取指定索引位置的对象。原创 2022-12-29 22:50:56 · 129 阅读 · 0 评论 -
制造异常对象:throw
(5)nterger类的static方法parselInt(String s)将s转换成对应的int值。(若继承的是RuntimeException,则该异常为运行时异常,若继承的是Exception,则该异常为编译时异常)(1)在主类(EcmDef)中定义异常方法(ecm)完成两数相除功能。(3)在程序中,自定义对应输入负数的异常类(EcDef)。(2)在main()方法中使用异常处理语句进行异常处理。输入负数(EcDef自定义的异常)进行异常处理。①声明一个类继承一个异常类。原创 2022-09-04 22:17:55 · 451 阅读 · 0 评论 -
处理异常的方式之二:throws
throws是异常的处理方式之一,只不过处理的方式是将异常抛出,交给调用者做具体的处理。【补充】:子类重写方法抛出的异常类型范围不能大于父类被重写方法异常类型的范围。throws是异常的处理方式之一,使用在方法的声明处,后面跟异常的类型。异常的处理方式之一:throws。原创 2022-09-04 18:23:45 · 357 阅读 · 0 评论 -
finally执行语句的注意和小陷阱
finally 是可选的,一旦写上就一定执行的语句,即使过程中有return也一定执行。原创 2022-09-04 15:07:17 · 141 阅读 · 0 评论 -
异常的处理
--运行时异常(非受检异常unchecked):有时可以保证程序的正常运行,一旦发生异常,会在该代码处生成一个异常对象。/--编译时异常(受检异常 checked):编译时对其进行检查,若不处理,编译不能通过。会在该代码处生成一个异常对象,以堆栈形式抛出,若不对其处理,最终会导致程序终止。抛:一旦某句代码发生异常,会在该代码处生成一个异常对象,然后堆栈式抛出。抛:一旦某句代码发生异常,会在该代码处生成一个异常对象,然后堆栈式抛出。Java中的异常都是以对象的形式存在,一旦某句代码发生异常,原创 2022-09-04 14:43:56 · 289 阅读 · 0 评论 -
其他常用类
二、java.text.DateFormat类:用于格式化时间/日期,但是是一个抽象类(不能创建实例)int round(float f):返回最接近f的int型(四舍五入)double ceil(double d) :返回不小于d的最小整数。double floor(double d):返回不大于d的最大整数。Long round( double d):返回最接近d的Long型。一、java.util.Date类:表示一个特定的时间,精确到毫秒。double abs( double d):返回绝对值。..原创 2022-08-31 21:01:43 · 139 阅读 · 0 评论 -
StringBuffer、StringBuilder、String的区别
StringBuffer replace(int start,int end,String str):替换。③String substring(int start, int end):取子字符串序列,包含头不包含尾。④StringBuffer delete(int start, int end):删除一段字符串。StringBuffer insert(int offset,String str) :插入。②int indexof(String str) :返回子串的位置索引。...原创 2022-08-30 17:36:07 · 97 阅读 · 0 评论 -
字符串常见算法
字符串常见算法原创 2022-08-28 14:51:27 · 1599 阅读 · 0 评论 -
API_String的重要特性
①int indexOf(int ch) :获取指定字符在字符串中的位置,若没有指定的字符,返回int indexOf (int ch,int fromIndex)③boolean startsWith(String str)和boolean endsWith(String str):判断是否已指定字符串开始/结尾。String replace(String oldStr,String oldStr):替换字符串中字符串。①.String concat (String str):串接字符串。原创 2022-08-25 16:50:49 · 134 阅读 · 0 评论 -
API(包装类)、装箱与拆箱、基本数据类型、包装类与String之间的转换
API(包装类)、装箱与拆箱、基本数据类型、包装类与String之间的转换原创 2022-08-18 22:05:18 · 237 阅读 · 0 评论 -
java内置常用注解
@Deprecated:用于注解属性、方法、类。* @Deprecated:用于注解属性、方法、类。* 一、注解:jdk1.5后出的特性,是一个元数据,是一个代码级别的说明。* 一、注解:jdk1.5后出的特性,是一个元数据,是一个代码级别的说明。* @Override:用于注解方法,说明该方法必须是一个重写方法。* @Override:用于注解方法,说明该方法必须是一个重写方法。* 注解在java中都是以“@注解名”的形式呈现。* @Inherited:用于说明注解用于继承性。...原创 2022-08-17 22:28:30 · 424 阅读 · 0 评论 -
自定义枚举类
Integer.parseInt方法转换),分别代表星期一至星期日,打印该值对应的枚举值,然后以此枚举值调用printWeek方法输出中文星期。--简而言之:当确定一个类有几个对象,使用枚举。* 2.在TestWeek类中声明方法中printWeek(Week week),根。* 1.声明Week枚举类,其中包含星期一至星期日的定义;* 3.在main方法中从命令行接收一个1-7的整数(使用。优化:每个枚举类都去单独实现show方法。1、自定义枚举类(jdk1.5前)1、自定义枚举类(jdk1.5前)...原创 2022-08-17 17:50:15 · 945 阅读 · 0 评论 -
类的成员之一:成员内部类、局部内部类
1.成员内部类:在类中声明另一个类,外面的类称为“外部类”,里面的类称为“内部类”①:是类的成员之一。(属性、方法、构造器、代码块)④内部类与外部类拥有相同的特性。原创 2022-08-17 14:21:40 · 349 阅读 · 0 评论 -
jdk1.8 接口新特性
jdk1.8 接口新特性、函数式接口:接口中只有一个抽象方法的接口。原创 2022-08-16 17:40:56 · 939 阅读 · 0 评论 -
接口的声明与使用
如:class Bird extends Animal implements Flyer,Runner{}⑧接口可以多实现----解决了Java中单继承的局限性。⑨接口不能继承任何类(又属性、方法。⑩一个类可以继承另一个类,同时实现多个接口。----(因为接口中的抽象方法没有方法体)一、接口:可以定义多个不相关事物的相同功能。⑥实现接口的类称为实现类,⑤接口就是用来被实现的。注意:先继承,后实现。...原创 2022-08-16 16:23:37 · 1760 阅读 · 0 评论 -
模块方法设计方式
模块方法设计方式原创 2022-08-14 21:45:42 · 143 阅读 · 0 评论