多线程编程步骤

  1. 创建资源类,在资源类创建属性和操作方法
  2. 资源类的操作方法
    1. 判断:
    2. 干活
    3. 通知
  3. 创建多个线程,调用资源类的操作方法

    创建线程的多种方式

  4. 继承Thread类

  5. 实现Runable接口
  6. 实现Callable接口
  7. 线程池

    Synchronized

    是一种同步锁

    使用方式

  8. 修饰代码块

  9. 修饰一个方法
  10. 修饰一个静态方法
  11. 修饰一个类

    ReentrantLock:可重入锁

    synchronized 是 自动上锁解锁,Lock接口需要手动上锁和解锁

Synchronized和Lock的区别

  1. Lock是一个接口,Synchronized是一个关键字
  2. synchronized发生异常时会自动释放锁,而Lock发生异常,如果没有手动释放锁,会造成死锁
  3. Lock可以让等待锁的线程响应中断,而synchronized不行,使用synchronized时,等待的线程会一直等待下去,不能够相应中断
  4. 通过Lock可以知道有没有成功获得锁,而synchronized不行
  5. Lock可以提高多个进程进行读操作的效率。