一、基础知识点
**多线程的好处:**通过多个线程来抢占CPU的执行权,最大限度地利用 CPU 资源。
**并行:**指两个或多个事件在同一时刻发生(同时发生)。
**并发:**指两个或多个事件在同一个时间段内发生。
**进程与线程的关系:**进程内部的一个独立执行单元;一个进程可以同时并发的运行多个线程,可以理解为一个进程便相当于一个单 CPU 操作系统,而线程便是这个系统中运行的多个任务。
二、线程安全
**2.1、产生线程安全问题的原因:**1. 多线程环境下、2. 有共享数据、3. 多条语句操作共享数据;通俗的说就是多线程开启后,虽然效率高了,但是人多手杂,难免对同一数据多做了处理。
2.2、线程安全的处理方法:
同步代码块
格式:
synchronized(锁对象) {
同步的代码
}
**锁对象:**可以是任意对象,一般我们使用的是 this, 字节码文件对象,锁对象必须是相同的。
同步代码块的作用: 保证同步代码块中的代码在执行的时候不被抢走执行权
三、等待唤醒机制
3.1、wait():无限等待。
3.2、notify():随机唤醒一个线程。
3.3、notifyAll():唤醒所以的线程。
四、线程池:
4.1请描述什么是线程池。
答:是一个可以容纳多个线程的容器,可以重复使用线程池中的线程,避免了重复创建线程的繁琐和重复创建和销毁线程所造成的资源浪费。
4.2线程池优点:
1、可以重复使用线程池中的线程,避免了重复创建线程的繁琐和重复创建和销毁线程所造成的资源浪费。2、通过线程池可以控制程序中线程同时运行的个数,即控制线程的并发数。