java初级第19天总结笔记
来源:互联网 发布:国际足球数据库网易 编辑:程序博客网 时间:2024/05/02 01:25
一、处理流--序列化流(输出流)-
作用:把程序的(基本类型+引用类型)数据 写到 数据源(字节数据-可以长久存储)
反序列化流(输入流)
处理流--打印流(输出流)
作用:把程序的(基本类型+引用类型)数据 写到 数据源(字符串数据-可以给用户显示使用)
两个打印流
PrintStream
PrintWriter
对比
1)超类型不同
PrintStream-》继承outputStream--》传输最小数据单元是字节
PrintWriter-》继承Writer--》传输最小数据单元是字符
2)自动刷新机制不一样
二、线程
java中开启线程两种方式java中开启线程两种方式
1)定义新的类实现Runnable接口
2)定义新的类继承Thread类
实现Runnable(任务)接口-开启线程步骤
1)新定义任务类实现Runnable接口
重写run方法->任务方法
2)创建新定义任务类对象
3)创建线程对象-绑定任务对象
4)开启线程-执行任务
java的线程
1)main线程 任务--》把main执行完成
2)thread线程 任务--》把run执行完成
线程的死亡
1)执行完任务代码(main方法或run方法)
2)遇到了异常抛给jvm
线程相关的状态
1. 新建(new):
新创建了一个线程对象。
2. 可运行(runnable):
线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。
3. 运行(running):
可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。
4. 阻塞(block):
阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入可运行(runnable)状态,才有机会再次获得cpu timeslice 转到运行(running)状态。
阻塞的情况分三种:
(一). 等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。
(二). 同步阻塞:运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。
(三). 其他阻塞:运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。
5. 死亡(dead):
线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。
线程的优先级:线程执行代码的[概率],优先级越高,执行代码的机会越高。
线程默认优先级--》5
线程设置优先级 setPriority(int newPriority)
优先级10个级别1-10整数(10最大,1最小)
常量优先级数字
public static final int MAX_PRIORITY 10
public static final int MIN_PRIORITY 1
public static final int NORM_PRIORITY 5
线程的分类
1)普通(用户)线程(银行的业务员):执行业务逻辑的线程
-如果进程中有多个普通线程,必须每个普通线程执行完成,进程才会结束。
2)守护(后台)线程(银行的清洁工):执行业务逻辑支持的线程(gc线程)-
-如果进程中有多个普通线程和守护线程,如果所有的普通线程都执行完成
-那么正在执行守护线程也会随之停止。
设置对应的线程
1)main线程-》普通线程
2)gc线程-》守护线程
3)新创建的thread线程--》默认是-》普通线程
setDaemon(true)-》守护线程
三、synchronized三种使用
synchronized成员方法(重点):锁对象--》调用了当前成员方法的对象(this)
语法:public synchronized 返回值类型 方法名(...)...;
synchronized块(了解):锁对象--》锁住传入的指定对象
语法:synchronized(被锁的对象){
}
synchronized静态方法(了解)
对象锁:执行同步代码的时候需要把对象锁住。
每个对象都有一个对象锁,线程在执行对象synchronized修饰的代码时,会先【自动获取对象锁】,会把该对象的synchronized修饰的所有代码锁住,
执行完成synchronized代码后,会【自动释放对象锁】,其他线程才可以获取对象锁,获取之后【自动获取对象锁】锁住synchronized代码然后执行。
synchronized 关键字:会【自动获取锁和释放锁】,也可以手动获取和释放!java.util.concurrent.locks包提供了丰富的支持。
作用:把程序的(基本类型+引用类型)数据 写到 数据源(字节数据-可以长久存储)
反序列化流(输入流)
处理流--打印流(输出流)
作用:把程序的(基本类型+引用类型)数据 写到 数据源(字符串数据-可以给用户显示使用)
两个打印流
PrintStream
PrintWriter
对比
1)超类型不同
PrintStream-》继承outputStream--》传输最小数据单元是字节
PrintWriter-》继承Writer--》传输最小数据单元是字符
2)自动刷新机制不一样
二、线程
java中开启线程两种方式java中开启线程两种方式
1)定义新的类实现Runnable接口
2)定义新的类继承Thread类
实现Runnable(任务)接口-开启线程步骤
1)新定义任务类实现Runnable接口
重写run方法->任务方法
2)创建新定义任务类对象
3)创建线程对象-绑定任务对象
4)开启线程-执行任务
java的线程
1)main线程 任务--》把main执行完成
2)thread线程 任务--》把run执行完成
线程的死亡
1)执行完任务代码(main方法或run方法)
2)遇到了异常抛给jvm
线程相关的状态
1. 新建(new):
新创建了一个线程对象。
2. 可运行(runnable):
线程对象创建后,其他线程(比如main线程)调用了该对象的start()方法。该状态的线程位于可运行线程池中,等待被线程调度选中,获取cpu 的使用权 。
3. 运行(running):
可运行状态(runnable)的线程获得了cpu 时间片(timeslice) ,执行程序代码。
4. 阻塞(block):
阻塞状态是指线程因为某种原因放弃了cpu 使用权,也即让出了cpu timeslice,暂时停止运行。直到线程进入可运行(runnable)状态,才有机会再次获得cpu timeslice 转到运行(running)状态。
阻塞的情况分三种:
(一). 等待阻塞:运行(running)的线程执行o.wait()方法,JVM会把该线程放入等待队列(waitting queue)中。
(二). 同步阻塞:运行(running)的线程在获取对象的同步锁时,若该同步锁被别的线程占用,则JVM会把该线程放入锁池(lock pool)中。
(三). 其他阻塞:运行(running)的线程执行Thread.sleep(long ms)或t.join()方法,或者发出了I/O请求时,JVM会把该线程置为阻塞状态。当sleep()状态超时、join()等待线程终止或者超时、或者I/O处理完毕时,线程重新转入可运行(runnable)状态。
5. 死亡(dead):
线程run()、main() 方法执行结束,或者因异常退出了run()方法,则该线程结束生命周期。死亡的线程不可再次复生。
线程的优先级:线程执行代码的[概率],优先级越高,执行代码的机会越高。
线程默认优先级--》5
线程设置优先级 setPriority(int newPriority)
优先级10个级别1-10整数(10最大,1最小)
常量优先级数字
public static final int MAX_PRIORITY 10
public static final int MIN_PRIORITY 1
public static final int NORM_PRIORITY 5
线程的分类
1)普通(用户)线程(银行的业务员):执行业务逻辑的线程
-如果进程中有多个普通线程,必须每个普通线程执行完成,进程才会结束。
2)守护(后台)线程(银行的清洁工):执行业务逻辑支持的线程(gc线程)-
-如果进程中有多个普通线程和守护线程,如果所有的普通线程都执行完成
-那么正在执行守护线程也会随之停止。
设置对应的线程
1)main线程-》普通线程
2)gc线程-》守护线程
3)新创建的thread线程--》默认是-》普通线程
setDaemon(true)-》守护线程
三、synchronized三种使用
synchronized成员方法(重点):锁对象--》调用了当前成员方法的对象(this)
语法:public synchronized 返回值类型 方法名(...)...;
synchronized块(了解):锁对象--》锁住传入的指定对象
语法:synchronized(被锁的对象){
}
synchronized静态方法(了解)
对象锁:执行同步代码的时候需要把对象锁住。
每个对象都有一个对象锁,线程在执行对象synchronized修饰的代码时,会先【自动获取对象锁】,会把该对象的synchronized修饰的所有代码锁住,
执行完成synchronized代码后,会【自动释放对象锁】,其他线程才可以获取对象锁,获取之后【自动获取对象锁】锁住synchronized代码然后执行。
synchronized 关键字:会【自动获取锁和释放锁】,也可以手动获取和释放!java.util.concurrent.locks包提供了丰富的支持。
0 0
- java初级第19天总结笔记
- java初级第12天总结笔记
- java初级第13天总结笔记
- java初级第14天总结笔记
- java初级第15天总结笔记
- java初级第16天总结笔记
- java初级第17天总结笔记
- java初级第18天总结笔记
- java初级第20天总结笔记
- java初级第10天笔记资料
- java初级第11天笔记资料
- 初级Java学习笔记总结
- 课堂笔记学习java(初级)第一节课
- Java初级第三天
- 课堂笔记学习java(初级)第三节课
- Java初级总结
- java 初级学习笔记
- Java初级笔记_1
- leetcode_c++:链表:Merge k Sorted Lists(023)
- java初级第18天总结笔记
- Java Unsupported major.minor version 52.0异常
- Camera自动对焦
- 进程管理
- java初级第19天总结笔记
- Python蹒跚学步0:关于Winpython的安装
- sublime经常出现不确定错误
- centos之lnmp
- java初级第20天总结笔记
- NKOI 2495 火车运输
- 面试题(二)
- 宽度搜索(BFS)
- getopts读取命令行参数