`
hunankeda110
  • 浏览: 741607 次
  • 性别: Icon_minigender_1
  • 来自: 深圳
社区版块
存档分类
最新评论

java线程的几种状态

阅读更多
学过Java的人都知道,Java是少数的集中支持多线程的语言之一,大多数的语言智能运行单独的一个程序块,无法同时运行不同的多个程序块,Java的多线程机制弥补了这个缺憾,他可以让不同的程序块一起运行,这样可以让程序运行更加顺畅,同时也达到了多任务处理的目的:   一、线程和进程的概念
  现在的操作系统是多任务操作系统。多线程是实现多任务的一种方式。
  进程是程序的一个动态执行过程,是指一个内存中运行的应用程序,每个进程都有自己独立的一块内存空间,一个进程中可以启动多个线程。比如在Windows系统中,一个运行的exe就是一个进程。线程是指进程中的一个执行流程,一个进程中可以运行多个线程。比如java.exe进程中可以运行很多线程。线程总是属于某个进程,进程中的多个线程共享进程的内存。“同时”执行是人的感觉,在线程之间实际上轮换执行。
  二、Java中线程的实现
  在Java中药想实现多线程有两种手段,一种是集成Thread类,另一种就是实现Runnable接口。下面看继承自Thread类线程的创建原理:
  首先定义一个线程类 该类必须继承自Thread类,同时必须明确的覆写run()方法
  如:
view sourceprint?1 class MyThread extends Thread{ 

2   

3   public void run(){ //覆写Thread类中的run方法此方法是线程中 

4   

5   线程主体; 的主体 

6   

7   }
然后定义一个主类,实例化线程类的对象,发动启动线程的命令
如:
view sourceprint?01 public class ThreadText{ 

02   

03   public stataic void main(String args[]){ 

04   

05   MyThread m1=new MyThread();//实例化对象 

06   

07   m1.start();//启动多线程 

08   

09   } 

10   

11   };
 实现Runnable接口:
  首先定义一个线程类继承自Runnable接口
  如:
view sourceprint?1 class MyThread implements Runnable{ 

2   

3   public void run(){ //覆写Runnable接口中的run方法 

4   

5   线程主体; 

6   

7   }

 然后定义一个主类,实例化线程类的对象,发动启动线程的命令
  如:

view sourceprint?01 public class ThreadText{ 

02   

03   public stataic void main(String args[]){ 

04   

05   MyThread m1=new MyThread();//实例化Runnable子类对象 

06   

07   Thread t1=new Thread(m1);//实例化Thread类对象 

08   

09   t1.start();//启动多线程 

10   

11   } 

12   

13   };

  三、线程的几种状态
  在Java当中,线程通常都有五种状态,创建、就绪、运行、阻塞和死亡。
  第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。
  第二是就绪状态。当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。
  第三是运行状态。线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进入了运行状态,开始运行run函数当中的代码。
  第四是阻塞状态。线程正在运行的时候,被暂停,通常是为了等待某个时间的发生(比如说某项资源就绪)之后再继续运行。sleep,suspend,wait等方法都可以导致线程阻塞。
  第五是死亡状态。如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡。对于已经死亡的线程,无法再使用start方法令其进入就绪。
分享到:
评论

相关推荐

    基于java 线程的几种状态(详解)

    下面小编就为大家带来一篇基于java 线程的几种状态(详解)。小编觉得挺不错的,现在就想给大家,也给大家做个参考。一起跟随小编过来看看吧

    关于线程(java)两天的课件

    线程入门,创建线程、线程的几种状态、线程排序、线程池入门。

    Java 多线程介绍

    Java 多线程介绍 线程的几种状态 1

    在java中的线程的转换图

    在java中的线程转换的总描述,结合了所有的java有关线程的状态转移图

    简单谈谈Java 中的线程的几种状态

    主要介绍了简单谈谈Java 中的线程的几种状态的相关资料,需要的朋友可以参考下

    Java多线程教程吐血整理干货.md

    线程的几种状态 sleep方法和wait方法的区别 stop,suspend,resume等方法为什么会被遗弃 interrupt,interrupted,isInterrupted方法区别 join方法 yield方法 多线程 进程和线程 进程与线程最主要的区别是它们是操作系统...

    个人总结的深入java多线程开发

    4)几种多线程代码写法 10 5)一个超时自动退出程序的类 12 6)同步锁synchronized 13 7)一个程序执行1秒之后自动退出 13 8)线程的状态 14 9)线程阻塞的条件(重要) 14 10) Interrupt()注意事项 16 三. 线程之间协作 17 ...

    Java中的线程与线程池.pptx

    首先,阐述了为什么需要线程、Java中实现线程的几种方式,线程的多种状态切换;然后,介绍了为什么需要线程池,JDK自带的线程池实现方式ThreadPoolExecutor的使用及其原理,最后强调ThreadPoolExecutor应用的注意点...

    Java程序设计案例教程-第8章-多线程编程.pptx

    第4页 主要内容 8.1 Java线程模型 8.2 创建线程 8.3 同步与线程间通信 8.4 获取线程状态 8.5 本章小结 8.6 思考和练习 Java程序设计案例教程-第8章-多线程编程全文共36页,当前为第4页。 8.1 Java线程模型 Java对多...

    java面试题(线程和JSP及EJB部分).pdf

    1、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 答:有两种实现方法,分别是继承Thread类与实现Runnable 接口 用synchronized 关键字修饰同步方法 反对...

    中软公司JAVA培训资料.doc

    6、线程的基本概念、线程的基本状态以及状态之间的关系 7、线程的同步、如何实现线程的同步 8、几种常用的数据结构及内部实现原理。 9、Socket通信(TCP、UDP区别及Java实现方式) **10、Java的事件委托机制和...

    多线程,高并发.pdf

    1. stop() 和 suspend() 方法为何不推荐使用? 2. sleep() 和 wait() 有什么区别? 3. 同步和异步有何异同,在什么情况下分别使用他们? 4. 当一个线程进入一个对象的一个 ...6. 概括的解释下线程的几种可用状态。

    java笔试题大集合及答案(另附各大公司笔试题)

    60、java中有几种方法可以实现一个线程?用什么关键字修饰同步方法? stop()和suspend()方法为何不推荐使用? 答:有两种实现方法,分别是继承Thread类与实现Runnable接口 用synchronized关键字修饰同步方法 反对使用...

    【java系列文章】java 基础知识

    4.概括的解释下Java线程的几种可用状态? 中级 1.简述Java同步方法和同步代码块的区别 ? 2.HashMap和Hashtable有什么区别? 3.简述Java堆的结构? 什么是堆中的永久代(Perm Gen space)? 4.简述 Dubbo 和 Spring Cloud ...

    后端JAVA虚拟机JVM调优必备工具

    二、此工具线程的几种状态 1.死锁,Deadlock(重点关注)  2.执行中,Runnable(重点关注)  3.等待资源,Waiting on condition(重点关注)  4.等待监控器检查资源,Waiting on monitor  5.暂停,Suspended  ...

    Java中停止线程执行的方法

    一、暂停或停止线程的理论 在Java编程中,要暂停或停止当前正在运行的线程,有几种方法。对于把线程转入睡眠Sleep状态,使用Thread.sleep()是最正确的方式。或许有人会问,为什么不使用等待wait()或通知notify()?要...

    Java的线程机制

    Java中线程4个状态之间的转换;并结合例子说明了两种创建线程的方法。 线程是指程序中能顺序执行的一个序列。一个线程只有一个入口点但可能有几个出口点不过,每个时刻的执行点总是只有一个。线程是不能独立...

    Java常见面试题208道.docx

    15.java 中 IO 流分为几种? 16.BIO、NIO、AIO 有什么区别? 17.Files的常用方法都有哪些? 二、容器 18.java 容器都有哪些? 19.Collection 和 Collections 有什么区别? 20.List、Set、Map 之间的区别是什么? 21....

    JAVA上百实例源码以及开源项目

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

    JAVA上百实例源码以及开源项目源代码

     Java绘制图片火焰效果,源代码相关注释:前景和背景Image对象、Applet和绘制火焰的效果的Image对象、Applet和绘制火焰的效果的Graphics对象、火焰效果的线程、Applet的高度,图片到图片装载器、绘制火焰效果的X坐标...

Global site tag (gtag.js) - Google Analytics