`
hpjianhua
  • 浏览: 239828 次
  • 性别: Icon_minigender_1
  • 来自: 广州
社区版块
存档分类

java 线程的状态与控制

阅读更多

一、线程的状态

 

线程的主要状态有:

 

1.新建状态(New) :线程被创建后,并不是马上启动,而是进入新建状态。此时线程还没有得到分配的资源。

 

2.可运行状态(Runnable) :新建状态的线程在被调用start()方法后,进入可运行状态,此时线程已经得到了必要的运行时资源,只差CPU的调度。

 

3.运行状态(Running) :得到运行时必要资源的线程,一旦线程占有了CPU,就进入了运行状态。

 

4.阻塞状态(Blocked) :这是线程有资格运行时它所处的状态。实际上这个三状态(等待/阻

 

塞/睡眠状态)组合为一种,其共同点是:线程仍旧是活的,但是当前没有条件运行。换句话

 

说,它是可运行的,但是如果某件事件出现,他可能返回到可运行状态;如果运行状态的线程

 

调用了yield()方法、sleep()方法、join()方法或者wait()方法,或者申请对象锁而没有得

 

到结果、或者有更高优先级的线程进入调度等,都可以进入阻塞状态。

 

5.终止状态(Dead) :当运行状态的线程正常执行完毕后,就进入了终止状态。线程一旦死去

 

或者终止,就不能够重新调用start()方法,否则抛出异常:

 

java.lang.IllegalThreadStateException

 

二、线程的控制方法

 

1.暂停类方法:

 

A. sleep(): Thread.sleep(long millis)和Thread.sleep(long millis, int nanos)静态

 

方法强制当前正在执行的线程休眠(暂停执行),以“减慢线程”。当线程睡眠时,它入睡

 

在某个地方,在苏醒之前不会返回到可运行状态。当睡眠时间到期,则返回到可运行状态。

 

线程睡眠的原因:线程执行太快,或者需要强制进入下一轮,因为Java规范不保证合理的轮

 

换。

 

睡眠的实现:调用静态方法Thread.sleep(3000);

 

睡眠的位置:为了让其他线程有机会执行,可以将Thread.sleep()的调用放线程run()之内。

 

这样才能保证该线程执行过程中会睡眠。

 

2.状态类方法:

 

1).interrupt()

 

功能:清除线程因调用暂停类方法而产生的中断状态,并且向该线程发送InterruptException类异常。

 

2).currentThread()

 

说明:静态方法。

功能:返回当前线程的引用。

 

3).isAlive()

功能:返回当前线程的运行状态。

 

3.启停类方法:

 

1).start() : 启动线程的方法,线程开始运行。

 

2).stop(): 强行中止线程的运行,引方法容易造成数据不一致。

 

3).suspend():挂起线程,挂起后的线程将不能像sleep()方法那样自动恢复,只能在其他线

 

程中调用resume()方法恢复线程的状态,本方法不释放线程中持有的锁,容易引起死锁。

 

4).resume():恢复线程执行。在线程交互过程中,不提倡使用suspend()和resume()方法。

 

<!--EndFragment-->

0
2
分享到:
评论

相关推荐

    Java线程:线程状态的转换

    ### Java线程:线程状态的转换 #### 一、线程状态及其转换 ...通过以上分析,我们可以看到Java线程状态转换的基本原理以及如何利用线程状态来控制线程的行为,这对于开发高性能、高可靠性的并发程序至关重要。

    java线程与并发编程实践

    线程的生命周期包括新建、就绪、运行、阻塞和终止五种状态,Java API提供了start()、sleep()、join()、yield()、interrupt()等方法来控制线程状态。 并发编程的核心挑战在于线程间的同步与通信。Java提供了一系列...

    java线程.pdf

    下面将围绕“Java线程”这一主题展开详细的介绍与解释。 ### Java线程基础 在Java语言中,线程是程序执行流的基本单元。一个标准的Java应用程序至少会有一个线程,即主线程,用于执行程序的主要逻辑。通过创建多个...

    java通过线程控制程序执行超时(新)

    Java的线程提供了中断机制,通过`Thread.interrupt()`和`Thread.isInterrupted()`方法来控制和检查线程中断状态。在长时间运行的任务中,应定期检查中断标志,一旦检测到中断,及时清理资源并退出。 ```java ...

    Java线程.ppt

    学习Java线程,理解其创建、状态转换、调度和控制,以及如何处理线程间的互斥和同步,对于开发高效、稳定的并发程序至关重要。通过深入研究这些概念,开发者能够编写出更符合现代计算需求的高质量软件。

    Java线程详解大全

    Java线程是并发编程的核心部分,它允许程序在同一时间执行多个独立的任务,从而提高系统效率和响应速度。本文将深入探讨Java线程的概念、生命周期、实现方式以及相关的同步机制。 首先,理解线程的基本概念至关重要...

    java线程实例 各种小Demo

    二、线程状态与控制 Java线程有五种状态:新建、可运行、运行、阻塞和终止。可以通过Thread类的getState()方法查看线程状态。线程的控制包括: - sleep():使当前线程进入休眠状态,指定时间后自动唤醒。 - join():...

    Java线程Java线程Java线程Java线程

    Java线程的创建、管理与同步是其核心内容。 1. **线程创建** - **通过实现Runnable接口**:创建一个实现了Runnable接口的类,并重写run()方法,然后将该类的对象传递给Thread类的构造函数来创建线程。 - **通过...

    Java线程状态转换.pdf

    Java线程状态转换是Java多线程编程中的关键概念,对于理解和优化并发程序至关重要。Java线程在其生命周期中经历多种状态,这些状态之间的转换是由线程调度器根据特定的策略来决定的。以下是对Java线程状态转换的详细...

    java 线程java 线程

    Java线程的管理与控制是Java多线程编程的重要组成部分。 首先,我们了解线程的创建方式。Java提供了两种创建线程的方法:继承Thread类和实现Runnable接口。继承Thread类时,重写run()方法,然后创建Thread对象并...

    Java线程(第三版)

    书中可能深入讲解了线程同步和并发控制,这是Java线程中的核心概念。同步机制包括`synchronized`关键字、`wait()`, `notify()`, `notifyAll()`方法,以及`java.util.concurrent`包下的高级工具如`Semaphore`, `...

    java线程深入解析

    Java线程的深入理解和熟练掌握是Java程序员必备的技能,它涉及到程序的性能优化、并发控制和安全性,是开发复杂多线程应用的基础。在实际开发中,合理使用线程同步机制和理解线程调度原理,可以有效避免死锁、活锁等...

    Java线程使用教程

    4. **线程状态**:Java线程有新建、就绪、运行、阻塞和死亡五种状态,可以通过`getState()`获取。 三、线程池与Executor框架 1. **ExecutorService**:Java 5引入了`ExecutorService`接口,它是线程池的抽象,通过...

    JAVA线程学习(源代码)

    Java提供了多种方法来控制线程状态,如`start()`启动线程,`sleep()`使线程暂停,`join()`等待线程完成,以及`interrupt()`中断线程。 并发控制是线程编程中的重要部分。Java提供了synchronized关键字来实现互斥...

    Java学习教程-探究JAVA线程状态及转化视频

    Java线程是并发编程的核心部分,...总的来说,Java线程状态和转换是Java并发编程的基础,对于提升软件的并发性和响应性具有重要意义。通过本教程的视频学习,你将能更深入地理解这些概念,并能够在实际开发中灵活运用。

    Java多线程知识点总结

    随着Java版本的更新,Java也引入了新的并发工具类,例如java.util.concurrent包下的并发集合、原子操作类以及各种并发控制类,这些工具类提供了比传统synchronized和volatile关键字更强大、更灵活的线程同步控制机制...

    设计滚动字演示线程状态及改变方法

    综上所述,设计滚动字演示线程状态及改变方法涉及到了Java GUI编程、多线程控制、线程状态管理、动画效果实现以及设计模式等多个方面。理解并掌握这些知识点,能帮助我们构建出高效、稳定的滚动文字展示系统。

    JAVA单线程多线程

    ### JAVA中的单线程与多线程概念解析 #### 单线程的理解 在Java编程环境中,单线程指的是程序执行过程中只有一个线程在运行。这意味着任何时刻只能执行一个任务,上一个任务完成后才会进行下一个任务。单线程模型...

    java线程.rar

    Java线程是Java编程语言中...以上知识点覆盖了Java线程的基础概念、创建方式、状态管理、同步机制以及高级特性,是Java程序员必须掌握的重要内容。通过深入理解和熟练应用这些知识,可以编写出高效、安全的多线程程序。

    Java多线程(二)、线程的生命周期和状态控制

    ### Java多线程之线程的生命周期和状态控制 #### 一、线程的生命周期 在Java中,线程的生命周期是指线程从创建到结束的整个过程。根据线程的状态变化,我们可以将线程的生命周期划分为以下几个阶段: 1. **新建...

Global site tag (gtag.js) - Google Analytics