在一个时间点每个线程有哪些狀态有且只有一种状态,反应线程有哪些状态当前的状况
在Thread类中用枚举定义了线程有哪些状态的6中状态:
new:新建/初始状态 | 新建好了的线程有哪些状态对象,未调用start()启动线程有哪些状态 |
线程有哪些状态对象调用了start()后线程有哪些状态处于运行状态。调用start()后由于处理器资源線程有哪些状态可能不能立即分配到cpu资源开始运行,运行状态又分为运行中(running)和就绪(ready)两种状态就绪状态的线程有哪些状态在获得CPU時间片后变为运行中状态。 |
|
线程有哪些状态在进入synchronized关键字修饰的方法或代码块(需要获取锁)时的状态等待获取到锁的过程。 | |
线程有哪些状态对象调用了wait()后的状态释放同步锁,一直处于等待被显式地唤醒的状态否则会处于无限期等待的状态。就好比你先去墙角反省矗到我叫你。 | |
线程有哪些状态调用Thread.sleep(long millis)进入超时等待状态sleep()方法是Thread类的静态本地native方法,它不会释放同步锁等待指定时长后自动唤醒运行,无需主动去唤醒 | |
当线程有哪些状态的run()方法完成时,或者主线程有哪些状态的main()方法完成时就处于终止状态。线程有哪些状态终止后不能再複生通常来说就是代码已经执行完毕。 |
- 新建线程有哪些状态:有三种方式新建线程有哪些状态对象分别是继承Thread类重写run()方法,实现Runnable接口偅写其run()方法实现Callable接口且有返回值。
- 运行状态:运行状态包括就绪状态和运行中状态就绪状态也称准备状态或者可执行状态。线程有哪些状态对象创建后调用该线程有哪些状态对象的start()方法,线程有哪些状态为可执行状态等待获取cup运行资源。在cpu调度资源后开始执行变為运行中状态。运行中的线程有哪些状态在时间片用完或者调用Thread.yield()方法的情况下会进入就绪状态Thread.yield()方法翻译为让步,就是说一个线程有哪些狀态调用这个方法后它就会把自己cpu执行的时间让掉,退出cpu运行再与其他线程有哪些状态共同争取cpu运行资源,并不是让给其他线程有哪些状态只是让出,再同时一起竞争
- 超时等待状态:运行中的线程有哪些状态调用了以下方法会进入超时等待状态:Thread.sleep(long
- 等待状态:处于等待中的线程有哪些状态需主要的去唤醒,否则将一直处于等待状态运行状态的线程有哪些状态调用了Object.wait()、Thread.join()方法进入等待状态,调用Object.notifly()、Object.notiflyAll()方法喚醒线程有哪些状态进入运行状态。超时等待和等待状态一大区别为等待状态的线程有哪些状态不会释放同步资源超时等待线程有哪些状态会释放同步资源。分别对应的是wait()和sleep(long)方法
- 阻塞状态:当运行的线程有哪些状态遇到了需要取得锁的代码块或者方法,即为synchronized修饰的茬获取不到锁的情况下,线程有哪些状态进入阻塞状态等待其他线程有哪些状态释放锁,当获取到锁是线程有哪些状态就进入运行状态可见,线程有哪些状态阻塞在多线程有哪些状态中是比较常见的场景
- 终止状态:当线程有哪些状态执行完,走完run方法或者主线程有哪些状态main执行完线程有哪些状态变为终止状态。