多线程知识回顾
在Java中创建线程的两种方式
1) 继承 Thread
2) 实现 Runnable 接口
同步与死锁
1) 同步方法 同步监视器为当前对象 this
2) 同步代码块(同步监视器/共享资源的对象){
}
过多的同步就会导致死锁
线程间通信的方法
1) wait()
2) notify()
3) notifyAll()
实现多线程的第三种方式
实现Callable 接口,重写 call 方法
线程同步Lock锁
Synchronized代码块
Synchronized方法
Lock 锁
线程池
创建和销毁对象是非常耗费时间的
创建对象:需要分配内存等资源
销毁对象:虽然不需要程序员操心,但是垃圾回收器会在后
台一直跟踪并销毁
对于经常创建和销毁、使用量特别大的资源,比如并发情况
下的线程,对性能影响很大。
思路:创建好多个线程,放入线程池中,使用时直接获取引
用,不使用时放回池中。可以避免频繁创建销毁、实现重复
为什么要使用线程池
1) 提高响应速度(减少了创建新线程的时间)
2) 降低资源消耗(重复利用线程池中线程,不需要每次都创
建)
3) 提高线程的可管理性:避免线程无限制创建、从而销毁系
统资源,降低系统稳定性,甚至内存溢出或者CPU 耗尽
使用线程池有哪些好处?
1) 提高响应速度(减少了创建新线程的时间)
2) 降低资源消耗(重复利用线程池中线程,不需要每次都创
建)
3) 提高线程的可管理性:避免线程无限制创建、从而销毁系
统资源,降低系统稳定性,甚至内存溢出或者CPU 耗尽
任务调度Task_Timer
任务:就是事情
调度:在不同的时间点或者在指定的时间点或者间隔多长时
间我去运行这个任务
生活中的闹钟就是任务调度
简述什么是ThreadLocal
ThreadLocal 直译为“本地线程”,其实它就是一容器,用于
存放线程的局部变量
ThreadLocal有什么用
作用:为解决多线程程序的并发问题
ThreadLocal主要的四个方法是什么?分别表示什么含义
ThreadLocal的使用场景
ThreadLocal 的使用场景为:用来解决数据库连接、Session
管理等