线程以及多线程

标题格

  1、线程的五种状态
1、线程的五种状态
  1)、新建
  当new创建一个线程,例如new thread(r),线程还没开始运行,处于新建状态。
  2)、就绪
  新建的新线程并不会自动运行,要执行需要调用start()方法创建线程运行的系统资源,返回后,此时线程就处于就绪状态。
  但是处于就绪状态的线程也并不是就能立即执行run()方法。因为线程必须同其他线程竞争CPU时间,获得CPU时间才能运行线程。(线程数>CPU数)
  3)、运行
  当线程获得CPU时间,进入运行状态,执行run()方法。
  4)、阻塞
  线程运行过程中,可能由于很多原因进入阻塞状态:
    1)、线程通过调用sleep方法进入睡眠状态;
    2)、线程试图获得一个锁,但是该锁被其他线程持有;
    3)、线程在等待某个处罚条件;(例如定时启动线程)
    所谓阻塞就是正在运行的线程没有结束,暂时让出CPU,其他处于就绪的线程就获得CPU时 间,进入运行状态。
  5)、死亡
  两个原因导致线程死亡:
    1)、run()方法正常退出而自然死亡;
    2)、一个未捕获的异常终止了run方法而使线程猝死;
    用isAlive返回true,则线程可运行或被阻塞。返回false,则线程死亡或者new状态且不是可运行的。

该随笔分类为公众号笔记,仅做笔记记录,加深记忆以及方便用时查找,非抄袭,非盈利。
参考:纯洁的微笑、石杉的架构笔记、java版web项目、架构师之路、springForAll社区等公众号。

猜你喜欢

转载自www.cnblogs.com/AlmostWasteTime/p/10134998.html