- 博客(6)
- 收藏
- 关注
原创 IO 框架
流概念:内存与存储设备之间数据的交换,数据需要依靠流进行传输流可具体分为三类:按方向分:输入流:将存储设备中的数据读进内存中 输出流:将内存中的数据写到存储设备中按单位分:字节流:以字节为数据的传输单位,可读写任何数据 字符流:以字符为数据的传输单位,只能读写文本数据按功能分:节点流:具有实际传输数据的读写功能 过滤流:在节点流之上增强功能字节流字节流的父类:InputStream(字节输入流):public int read(); publi.
2021-11-01 00:35:11
144
原创 线程安全的集合
我们日常使用集合时,如果集合涉及到多线程并发访问,那么就会产生线程安全隐患,这时我们需要使用线程安全的集合来供多线程并发访问JDK默认为我们提供了部分线程安全的集合如下图:同时Collections工具类在JDK1.2中为我们提供了一些获得线程安全集合的方法:public static <T> Collection<T> synchronizedCollection(Collection<T> collection) public static .
2021-10-29 00:08:12
1964
原创 线程池与Lock接口
线程池基本原理:在我们需要使用线程来执行任务的时候,通常会采用继承Thread类或者实现Runnable接口来创建线程,此时我们存在问题:单个线程约占用1M空间,过多分配线程可能会造成内存溢出 频繁的创建及销毁线程会增加虚拟机的回收频率,资源开销,造成程序性能下降 (JVM回收垃圾线程时停止一切用户线程)所以我们一般可以通过线程池来解决上述问题,以下为线程池的基本概念:存储线程的容器,可设定线程分配的数量上限 将预先创建的线程对象存入池中,同时里面的线程对象可以重用...
2021-10-27 01:20:20
184
原创 线程通信与经典案例
线程通信线程通信一般指线程等待唤醒机制,它可以用来解决多线程同步带来的死锁问题首先我们要明确线程通信是怎么解决死锁的,当你使用synchronized来解决线程安全时,你就已经存在死锁的隐患了,而持有锁的线程在其执行完毕时都不会释放锁,同样在线程获得锁之前线程一直会处于无限期阻塞状态,所以我们必须手动让其释放自己持有的锁,来让阻塞的线程获得运行。注意:一旦线程主动释放了自己的锁,会一直处于无限期等待状态,只有持有该线程所释放的锁的线程才能将其唤醒或者超过参数 timeout 设置的超时时间上
2021-10-26 00:00:40
239
原创 重写的方法优先级经典案例
子类调用继承的父类方法,方法里面的调用了子类重写过的方法,那么此时该调用谁的方法?以下为具体案例代码:class Father { int num1 = 10; int num2 = 5; public Father(int a) { num1 = a; } int getSum() { int sum; sum = num1 / num2; return sum; } v
2021-10-23 00:32:09
227
原创 异常学习笔记
异常基本概念:程序在运行过程中出现的特殊情况异常处理的必要性:任何程序都可能存在大量的未知问题,错误;如果不对这些问题进行正确处理,则可能导致程序的中断,造成不必要的损失。异常即为Throwable,他是一切异常的父类,位于java.lang包下Throwable又分为Error和ExceptionError指JVM,硬件,或执行逻辑错误,不能手动处理程序员一定要避免Error产生无穷递归即是一个很经典的Error错误Exception指程序在运行和配置中产生
2021-10-22 00:41:52
92
空空如也
空空如也
TA创建的收藏夹 TA关注的收藏夹
TA关注的人