什么是线程(一)

(一)什么是线程?waht?【”轻量级“进程,依赖进程,而存在。一个进程有一个或多个线程。eg:打开一个QQ,就是打开了一个进程,打开QQ聊天系统---->开启一个线程;打开视屏聊天--->又开启一个进程】

(二)一个线程完整的生命周期:

 

新建状态:使用new关键字,和Thread类(或其子类)建立一个线程对象后,该线程处于新建状态。保持这个状态直到程序start()这个线程

就绪状态:当线程调用了start()方法后--->进入就绪状态【就处于就绪队列中】。等待JVM线程调度器的调度。

运行状态【最复杂就绪状态线程获得CPU资源,就可以执行run()-->【处于运行状态】。它可以变为阻塞状态,就绪状态,死亡状态

阻塞状态

如果一个线程执行了sleep睡眠)、suspend已过时(因为它具有固有的死锁倾向)。挂起)等方法,失去所占用资源之后,该线程就从运行状态进入阻塞状态。在睡眠时间已到或获得设备资源后可以重新进入就绪状态。可以分为三种:

  • 等待阻塞:运行状态中的线程执行 wait() 方法,使线程进入到等待阻塞状态。

  • 同步阻塞:线程在获取 synchronized 同步锁失败(因为同步锁被其他线程占用)。

  • 其他阻塞:通过调用线程的 sleep() 或 join() 发出了 I/O 请求时,线程就会进入到阻塞状态。当sleep() 状态超时不会释放持有的锁】,join() 等待线程终止或超时,或者 I/O 处理完毕,线程重新转入就绪状态。

posted @ 2018-03-07 15:45  瀧思葉  阅读(152)  评论(0编辑  收藏  举报