1、序列化和反序列化的定义:
(1)Java序列化就是指把Java对象转换为字节序列的过程
Java反序列化就是指把字节序列恢复为Java对象的过程。
(2)序列化最重要的作用:在传递和保存对象时.保证对象的完整性和可传递性。
对象转换为有序字节流,以便在网络上传输或者保存在本地文件中。
反序列化的最重要的作用:根据字节流中保存的对象状态及描述信息,通过反序列化重建对象。
总结:核心作用就是对象状态的保存和重建。
2、进程是什么:进程是正在进行的程序
3、线程是什么:
线程是在进程中,实现不同功能的一段代码,多个线程会实现多个不同的功能
4、进程和线程有什么区别:
一个进程可以有多个线程,一条线程只能属于一个进程
5、实现线程的方式
1.实现Runnable接口
2.继承Thread类
6、每一个进程都至少存在一条线程,就是主线程,线程之间相互独立存在,依靠cpu的调度来执行
7、线程的生命周期
1.新建状态:创建线程对象的时候
Thread t = new Thread(mt)
2.就绪状态:当前线程开启的时候(调用start方法,间接调用run方法)
t.start();
就绪状态的时候,才会得到cpu分配的时间片
3.运行状态:当某条线程被分配到时间片而执行的时候,其他线程进入等待状态(就绪)
4.阻塞状态:当某条线程被执行了sleep或者wait方法的时候,cpu的时间片会分配给其他已就绪的线程
5.销毁状态:线程结束
![在这里插入图片描述](https://img-blog.csdnimg.cn/5a67cb1409ea410b941aa865f32d0b40.png#pic_center)
6.设置线程类型
1.用户线程、前台线程
2.守护线程、后台线程
当前台线程全部结束的时候,后台线程自动结束
setDaemon(boolean) true则为后台,false则为前台,默认是false
7.设置线程的优先级
范围:1-10 10最优先
优先级的概念是当所有线程处于就绪状态时,cpu更有可能把时间片分配给优先级更好的线程
但并不代表优先级更低的线程不会被分配时间片
8.线程同步
同步就是让多条线程在访问共享资源的时候自动排队
只有第一个访问过后,第二个才能访问
实现线程同步的关键字叫synchronized
synchronized有两种使用方式
1.同步块
synchronized(对象){需要同步的代码}
2.同步方法
在方法声明的返回值前面,添加sychronized关键字,使该方法被某条线程访问时,同步
9.死锁
多个线程互相锁着其他线程想要的共享的资源
10、线程间通讯
主要体现在三个方法中,wait,notify,notifyAll
这三个方法属于Object
wait: 无参:一直保持等待的状态,直到该线程被唤醒(notify)
notify: 唤醒一条正在等待的线程
notifyAll: 唤醒所有正在等待的线程
11、wait和sleep的区别
1.所属不同,wait属于Object,sleep属于Thread
2.wait会释放同步锁,sleep不会释放同步锁