并发编程(1)

93 阅读1分钟

基础

  • 多线程一定快么?(不是)
    • 需要上下文切换的开销
    • 创建销毁线程需要开销
  • 协程(单线程运行多任务)
  • 怎么避免死锁
    • 避免一个线程同时获取多个锁
    • 避免一个线程在锁内同时占咏多个资源
    • 定时锁
    • 加锁解锁在一个数据库链接里
  • 线程的六种状态
    • new
    • runnable
    • blocked
    • waiting
    • time_waiting
    • terminated
  • sleep和wait的区别
    • sleep不会释放锁
    • wait会释放对象锁,需要写到synconized方法块里面
    • join是用在线程上的,不会释放对象锁
    • yield 做出一个让步

  • synchronized
    • 便捷:隐式获取释放锁
  • lock
    • 可操作性
    • 可中断获取锁
    • 超时获取锁

AQS

  • 同步器:面向锁的实现者
  • 锁: 面向使用者