java基础部分回顾(2)
来源:互联网 发布:港台电视直播软件app 编辑:程序博客网 时间:2024/05/23 01:25
- 范型
- Demo d = new Demo(“Df”);
- Demo d1 = new Demo(120);
- System.out.println(d.getClass());
- System.out.println(d1.getClass());
- 范型只起到约束作用,但是并没有被编译进去 在编译的时候jvm将范型类型擦出
- 缺点
- 如果遇到了不同类型,那么就约束了自己的代码
- IO
- 设计模式
- java中一共有23种基本设计模式
- 装饰者模式
- 创建一个私有化对象(被添加)
- 构造器带有该对象
- 定义一个与目标相同的方法
- 特点
- 可以对原有目标的功能进行拓展
- 为什么要
- 因为随着软件的需求的改变,原有的功能已经不能够满足现在的业务需求,所以必须在原有的功能上进行功能拓展
- 与此同时,还不能改变原有的功能功能,因为原来的功能还在继续使用。
- 继承也可以实现该模式的效果,如果使用了继承,那么程序就会过于臃肿
- 什么时候用什么流
- 明确源和目的
- 源
- InputStream Reader
- OutPutStream Writer
- 明确数据是否是纯文本
- 源
- 纯文本:reader
- 否:inputStream
- 目的
- 是纯文本
- Writer
- 否
- OutPutStream
- 是纯文本
- 明确具体的设备
- 源设备
- 硬盘:file
- 键盘:System.in
- 内存:数组
- 网络:Socked流
- 目的设备
- 硬盘:file
- 控制台:System。out
- 内存:数组
- 网络:Socket流
- 源设备
- 是否需要额外的其他功能:
- 是否需要高效(缓冲区):
- 如果需要:buffer
- 转换流
- 如果需要:
- InputStreamReader OutPutStreamWriter
- 如果需要:
- 是否需要高效(缓冲区):
- 源
- 源
- 明确源和目的
线程
- 实现方式
- 继承Thread类
- 实现Runnable接口
- 调用通过start()方法
- 进程是指一种“自包容”的运行程序,有自己的地址空间;
- 线程是进程内部单一的一个顺序控制流 基于进程的特点是允许计算机同时运行两个或更多的程序。
- 基于线程的多任务处理环境中,线程是最小的处理单位。
- 基于线程的多任务处理的优点
- 在多任务中,各个进程需要分配它们自己独立的地址空间
- 多个线程可共享相同的地址空间并且共同分享同一个进程
- 线程之间切换成本低
- 进程之间调用涉及的开销比线程间通信多
- 线程的状态
- 新建 (Born) : 新建的线程处于新建状态
- 就绪 (Ready) : 在创建线程后,它将处于就绪状态,等待 start() 方法被调用
- 运行 (Running) : 线程在开始执行时进入运行状态
- 睡眠 (Sleeping) : 线程的执行可通过使用 sleep() 方法来暂时中止。在睡眠后,线程将进入就绪状态
- 等待 (Waiting) : 如果调用了 wait() 方法,线程将处于等待状态。用于在两个或多个线程并发运行时。
- 挂起 (Suspended) : 在临时停止或中断线程的执行时,线程就处于挂起状态。
- 恢复 (Resume) : 在挂起的线程被恢复执行时,可以说它已被恢复。
- 阻塞 (Blocked) – 在线程等待一个事件时(例如输入/输出操作),就称其处于阻塞状态。
- 死亡 (Dead) – 在 run() 方法已完成执行或其 stop() 方法被调用之后,线程就处于死亡状态。
- 可能使线程暂停执行的条件
- 线程优先级比较低,因此它不能获得 CPU 时间。使用 sleep( ) 方法使线程睡眠。
- 通过调用 wait( ) 方法,使线程等待。
- 通过调用 yield( ) 方法,线程已显式出让CPU控制权。
- 线程由于等待一个文件I/O事件被阻塞。
- 线程的优先级
- NORM_PRIORITY : 值为 5
- MAX_PRIORITY : 值为 10
- MIN_PRIORITY : 值为 1
- 缺省优先级为 NORM_PRIORITY
- final void setPriority(int newp) : 修改线程的当前优先级
- final int getPriority() : 返回线程的优先级
- final void setPriority(int newp) : 修改线程的当前优先级
- final int getPriority() : 返回线程的优先级
- 同步
- synchronized
- 数据安全
- 降低了代码逻辑的效率
- synchronized
- wait-notify 机制
- 为避免轮流检测,Java提供了一个精心设计的线程间通信机制,使用wait()、notify()和notifyAll()方法 。这些方法是作为 Object 类中的 final 方法实现的。这三个方法仅在 synchronized 方法中才能被调用。wait()方法告知被调用的线程退出监视器并进入等待状态,直到其他线程进入相同的监视器并调用 notify( ) 方法。 notify( ) 方法通知同一对象上第一个调用 wait( )线程。 notifyAll() 方法通知调用 wait() 的所有线程,具有最高优先级的线程将先运行。
几个方法
- Suspend()方法有死锁的倾向
- 使用的时候,目标线程会停下来,但却仍然持有在这之前获得的锁定。此时,其他任何线程都不能访问锁定的资源,除非被”挂起”的线程恢复运行。对任何线程来说,如果它们想恢复目标线程,同时又试图使用任何一个锁定的资源,就会造成死锁
- stop()方法
- 不安全。它会解除由线程获取的所有锁定,而且如果对象处于一种不连贯状态,那么其他线程能在那种状态下检查和修改它们
runnable只有run方法,start方法只属于thread
join()
- 相当于让出cpu
- Suspend()方法有死锁的倾向
- 实现方式
阅读全文
1 0
- java基础部分回顾(2)
- Java基础部分回顾(1)
- 基础部分回顾2
- java基础回顾2
- Java基础回顾(2)
- 基础部分回顾
- java基础回顾(一)
- java基础回顾(一)
- Java基础回顾(一)
- (转载)java基础回顾
- java基础部分(2)
- Java基础(部分)
- Java基础回顾篇第2天
- 2--java基础回顾之继承
- java基础回顾笔记-io流2
- Java面试基础部分(2)
- Java基础回顾---IO(字节流)
- Java基础回顾随记(一)
- U3D 日志、文本打印
- 为何学这么多技术,却做不好Coder!
- N皇后问题1.0
- eclipse批量改变量名和运行当前项目快捷键
- CSU1213/1214/1215/1217/1220/1221/1224/1003/1007/1009/1030/1067/1087/1100/1111/1112/1115/1158
- java基础部分回顾(2)
- Linux--用shell脚本写一个彩色进度条
- 537. Complex Number Multiplication
- CSU1222/1226/1233/1236/1239/1240/1785/1729/1753/1715/1643/1628
- 大白话:DDD、微服务和容器技术三者的关系
- JFileChooser多选、选择目录
- <NOIP> 3 . P1421 小玉买文具
- 关于DDD领域驱动设计的理论知识收集汇总
- CSU1781-阶乘除法-模拟