多线程编程步骤
- 创建资源类,在资源类创建属性和操作方法
- 资源类的操作方法
- 判断:
- 干活
- 通知
-
创建线程的多种方式
继承Thread类
- 实现Runable接口
- 实现Callable接口
-
锁
Synchronized
使用方式
修饰代码块
- 修饰一个方法
- 修饰一个静态方法
- 修饰一个类
ReentrantLock:可重入锁
synchronized 是 自动上锁解锁,Lock接口需要手动上锁和解锁
Synchronized和Lock的区别
- Lock是一个接口,Synchronized是一个关键字
- synchronized发生异常时会自动释放锁,而Lock发生异常,如果没有手动释放锁,会造成死锁
- Lock可以让等待锁的线程响应中断,而synchronized不行,使用synchronized时,等待的线程会一直等待下去,不能够相应中断
- 通过Lock可以知道有没有成功获得锁,而synchronized不行
- Lock可以提高多个进程进行读操作的效率。
