多线程基础线程状态
2018-04-01 20:28
232 查看
多线程基础线程状态
什么是多线程
进程是在计算机系统中独立运行的程序,线程是在进程中独立运行的任务.在多任务操作系统中,为了最大化利用CPU,使用了多线程的方式。在某个时间段,多个线程进行不同的任务,每个线程去CPU申请时间片, 每个线程交替占用时间片,每个线程都是断断续续的执行,对外看来是一直在运行。多线程可以让CPU在多个任务之间进行切换,从而使用时较短的任务及早完成,而不必等待耗时的任务。多线程提高了CPU利用率。
多线程有哪些状态
线程的状态有6种,通过Thread类的源码可以看到。
public enum State {
NEW,//新建未启动
RUNNABLE,//正在运行
BLOCKED,//阻塞,线程正在等待获取监视器锁进入同步块
WAITING,//等待,调用(Object.wait(),join(),LockSupport.park)
TIMED_WAITING,//带有时间的等待
TERMINATED ,;//任务结束
}
线程的状态切换
实践:
如何查看线程的状态
在线上排查问题的时候往往需要查看线程的状态.此时需要用命令
用 jstack pid(进程号(不是线程号)) 获取进程的 线程堆栈信息.
在线上应用出问题的时候经常会查看线程状态.统计线程的状态.进而排查原因.
什么是多线程
进程是在计算机系统中独立运行的程序,线程是在进程中独立运行的任务.在多任务操作系统中,为了最大化利用CPU,使用了多线程的方式。在某个时间段,多个线程进行不同的任务,每个线程去CPU申请时间片, 每个线程交替占用时间片,每个线程都是断断续续的执行,对外看来是一直在运行。多线程可以让CPU在多个任务之间进行切换,从而使用时较短的任务及早完成,而不必等待耗时的任务。多线程提高了CPU利用率。
多线程有哪些状态
线程的状态有6种,通过Thread类的源码可以看到。
public enum State {
NEW,//新建未启动
RUNNABLE,//正在运行
BLOCKED,//阻塞,线程正在等待获取监视器锁进入同步块
WAITING,//等待,调用(Object.wait(),join(),LockSupport.park)
TIMED_WAITING,//带有时间的等待
TERMINATED ,;//任务结束
}
线程的状态切换
实践:
package com.chart2; /** * 线程状态 */ public class ThreadState{ private static class StateWork implements Runnable{ public StateWork() { System.out.println("create Thread ,Thread State is "+Thread.currentThread().getState()); } public void run() { System.out.println("working,Thread State is "+Thread.currentThread().getState()); try { Thread.sleep(2000); } catch (InterruptedException e) { e.printStackTrace(); } } } public static void main(String[] args) throws InterruptedException { StateWork stateWork = new StateWork(); Thread workThread = new Thread(stateWork); System.out.println("before start.."+workThread.getState()); workThread.start(); Thread.sleep(1000); System.out.println("after start .."+workThread.getState()); Thread.sleep(1000); System.out.println(workThread.getState()); /** create Thread ,Thread State is RUNNABLE before start..NEW working,Thread State is RUNNABLE after start ..TIMED_WAITING TERMINATED */ } }
如何查看线程的状态
在线上排查问题的时候往往需要查看线程的状态.此时需要用命令
用 jstack pid(进程号(不是线程号)) 获取进程的 线程堆栈信息.
在线上应用出问题的时候经常会查看线程状态.统计线程的状态.进而排查原因.
相关文章推荐
- java 多线程基础(一)——线程创建及五种状态
- 多线程基础(四)线程的状态、安全性
- java多线程基础(1)-由调度方式引入线程各种运行状态
- 多线程基础知识第二篇:线程常用方法及各种状态
- 线程的状态及转换(java多线程基础)
- JAVA基础初探(十四)多线程(线程与进程概述、线程的实现、状态、常用方法、优先级、生命周期)
- 多线程 (一)基础线程机制--线程状态--Executor
- JAVA基础知识之多线程——线程的生命周期(状态)
- Java基础:多线程(1)--线程的概述、创建线程的方式、线程的多种状态、线程常用的方法
- 多线程_线程概述&实现方法一&线程状态&实现方法二
- Java多线程:线程状态
- 线程基础知识-产生、退出、状态切换
- 线程基础 第二篇:多线程之间的同步
- Java多线程 线程状态及转换 wait sleep yield join
- Java并发编程基础-线程-状态
- Linux下多线程查看工具(pstree、ps、pstack),linux命令之-pstree使用说明, linux 查看线程状态。 不指定
- 多线程学习之线程的五种状态图解
- Java基础-多线程-③线程同步之synchronized
- 初见Java多线程(三、线程的阻塞状态)
- Java多线程 -- 线程状态的转换