学习目标
●多线程
○线程安全
○线程死锁
○线程状态
○线程通信
○线程池

1. 多线程
1.1 多线程能解决什么问题 ?
能解决电脑处理多个任务,提高任务的执行性能

1.2 解决线程安全问题的方式有哪些 ?


格式 注意
同步代码块 synchronized(同步锁){
多个线程访问共享数据的代码
}
1.是一个对象 可以是任意类型任意对象
2.多个线程需要使用同一个锁对象(锁对象唯一)
同步方法 修饰符 synchronized返回值类型 方法名(方法参数) { } 1.对于非static方法,同步锁就是this。
2.对于static方法,我们使用当前方法所在类的字节码对象(类名.class), Class类型的对象
锁机制,Lock Lock中提供了获得锁和释放锁的方法
lvoid lock():获得锁
lvoid unlock():释放锁
多个线程使用相同的Lock锁对象,需要多线程操作数据的代码放在lock()和unLock()方法之间。一定要确保unlock最后能够调用


2.3 线程池存在的优势 ?
1.降低资源消耗
2.提高响应速度
3.体改线程的可管理性
2.4 线程池能处理什么任务 ?
线程池其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源。
2.5 线程有几种实现方式 ?

构造方法 实现步骤
实现Runnable接口 public Thread(Runnable target)
public Thread(Runnalbe target , String name)
定义任务类实现Runnable,并重写run方法
创建任务对象
使用含有Runnable参数的构造方法,创建线程对象并指定任务。
调用线程的start方法,开启线程
继承Thread类 public void run() public void start() 创建一个类继承Thread类。在类中重写run方法(线程执行的任务放在这里)
创建线程对象,调用线程的start方法开启线程。
执行程序,观察控制台的打印数据的现象


2.6 线程间的通信能解决什么问题 ?
能实现多个线程协作共同完成同一任务的问题

2. 当日问题小结
2.1 当日遇到的问题
2.2 出现问题原因
2.3 解决问题方案

若有收获,就点个赞吧