多线程

多线程基本原理

线程的运行状态

线程的状态

  • NEW:初始状态,线程被构建,但是还没有调用start方法
  • RUNNABLED:运行状态,Java线程把系统中的就绪与运行两种状态都统一为“运行中”
  • BLOCKED:阻塞状态,表示线程等待状态,线程因为某种原因放弃了cpu使用权
    • 等待阻塞:运行线程执行的wait方法,jvm会把当前线程加入到等待队列
    • 同步阻塞:运行的线程在获取对象的同步锁,若该同步锁被其他线程持有,那么jvm会把当前的线程放入锁池中
    • 其他阻塞:运行的线程执行Thread.sleep或者t.join方法,或者发出了I/O请求,jvm会把当前线程设置为阻塞状态,当sleep结束,join线程终止,io处理完毕则线程恢复
  • WAITING:等待状态
  • TIME_WAITING:超市等待状态,超时以后自动返回
  • TERMINATED:终止状态,表示当前线程执行完毕

线程的终止

Thread Dump日志分析