Java的多线程 --线程的状态

线程可以有6中状态。

[1].New(新生)

[2].Runnable(可运行)

[3].Blocked(被阻塞)

[4].Waiting(等待)

[5].Timed Waiting(计时等待)

[6].Terminated(被终止)

1.新生(New)线程:

  当使用new 操作符创建一个先的线程,但该线程还没有调用start()方法。线程这个时候的状态就是新生,这个时候我们可以做些初始化之类的工作。

2.可运行(Runnable)线程:

  一旦调用了start()方法,这个线程就处于可运行(Runnable)状态。

  为什么说是可运行Runnable状态,而不是运行状态?因为一个线程启动后,它可能正在运行,也可以还没有运行,而这个是取决于我们的操作系统给线程提供的运行的时间,一个线程一旦开始运行,它不必始终保持运行,事实上运行中的线程“中断”,目的是为了让其他的线程获得运行的机会,线程的调度细节依赖于操作系统提供的服务。

3.被阻塞的线程和等待线程

当线程处于被阻塞或者等待状态时,它暂时不活动,线程不会运行任何的代码而且消耗最少的资源,直到线程调度器重新激活他。细节取决于线程是怎么达到非活动状态的。

1).当一个线程试图获取一个内部的对象锁,而该锁被其他线程持有,则该线程进入阻塞状态。当所有其他线程释放该锁,并线程调度器允许本线程持有它的时候,该线程将变成非阻塞状态。

2).当线程等待另一个线程通知调度器一个条件时,它自己进入等待状态。

3).有几个方法有一个超时参数,调用它们导致进入计时等待状态。这个状态将一直保持到超时期满或者接到适当的通知。

4.被终止的线程

线程会因为2个原因之一而被终止。

1).run方法正常退出而自然死亡。

2).因一个没有捕获的异常而终止了run方法而意外死亡。

Java的多线程 --线程的状态,布布扣,bubuko.com

时间: 2024-08-03 06:32:57

Java的多线程 --线程的状态的相关文章

Java的多线程 --线程的概念

Java的多线程--线程的概念 一个程序同时执行多个任务,通常,每个任务称之为线程(thread),她是线程控制的简称. 可以运行一个以上的任务的程序叫做多线程程序. 1.感觉线程和进程很像,那么他们的区别是什么? 其实他们是有本质的区别:每个进程拥有自己独立的一整套变量,而线程则共享数据. 2.在Java中怎么创建一个线程去执行一个任务. 主要有4个步骤. 1)将任务代码移到实现了Runnable接口类的run方法中,这个接口很简单,只有一个方法. public interface Runna

java 多线程-线程的状态

观察线程的状态State state=Thread对象.getState();int num=Thread.activeCount();//当前活跃的线程个数 public class n { public static void main(String[]args) throws InterruptedException { Thread t =new Thread(()->{ for(int i=0;i<5;i++) { try { Thread.sleep(100); } catch (

黑马程序员--Java基础--多线程|线程同步

--Java培训.Android培训.iOS培训..Net培训 期待与您共同交流!-- 多线程基础.线程同步 1. 多线程基础 1.1. 进程和线程 1.1.1. 什么是进程 所谓进程(process)就是一块包含了某些资源的内存区域.操作系统利用进程把它的工作划分为一些功能单元.进程中所包含的一个或多个执行单元称为线程(thread).进程还拥有一个私有的虚拟地址空间,该空间仅能被它所包含的线程访问.线程只能归属于一个进程并且它只能访问该进程所拥有的资源.当操作系统创建一个进程后,该进程会自动

java的多线程:线程基础

1.线程与进程区别 每个正在系统上运行的程序都是一个进程.每个进程包含一到多个线程.线程是一组指令的集合,或者是程序的特殊段,它可以在程序里独立执行.也可以把它理解为代码运行的上下文.所以线程基本上是轻量级的进程,它负责在单个程序里执行多任务.通常由操作系统负责多个线程的调度和执行. 使用线程可以把占据时间长的程序中的任务放到后台去处理,程序的运行速度可能加快,在一些等待的任务实现上如用户输入.文件读写和网络收发数据等,线程就比较有用了.在这种情况下可以释放一些珍贵的资源如内存占用等等. 如果有

Java的多线程 --线程中断

当线程的run方法执行方法体中的最后一条语句后,并由执行return语句返回时,或者出现了方法中没有捕获的异常时,线程将终止. 有一种可以强制线程终止的方法:interrupt可以用来请求终止线程.当对一个线程调用interrupt方法时,线程的中断状态将被置位,每一个线程都具有boolean标记.每个线程都应该不时的检查这个标记,以判断线程十分被中断. 要想清楚中断状态十分被置位,首先调用静态的Thread.currentThread()方法获得当前线程,再调用isInterrupted 方法

多线程 线程的状态

//  Created by dyf on 14-6-23. //  Copyright (c) 2014年 ___FULLUSERNAME___. All rights reserved. // #import "DYFViewController.h" @interface DYFViewController () @property (nonatomic, strong) NSThread *thread; @end @implementation DYFViewControll

Java自学-多线程 线程池

Java 如何开发一个自定义线程池 每一个线程的启动和结束都是比较消耗时间和占用资源的. 如果在系统中用到了很多的线程,大量的启动和结束动作会导致系统的性能变卡,响应变慢. 为了解决这个问题,引入线程池这种设计思想. 线程池的模式很像 生产者消费者模式,消费的对象是一个一个的能够运行的任务 步骤 1 : 线程池设计思路 线程池的思路和生产者消费者模型是很接近的. 准备一个任务容器 一次性启动10个 消费者线程 刚开始任务容器是空的,所以线程都wait在上面. 直到一个外部线程往这个任务容器中扔了

java的多线程:线程安全问题

什么是线程安全? 为什么有线程安全问题? 当多个线程同时共享,同一个全局变量或静态变量,做写的操作时,可能会发生数据冲突问题,也就是线程安全问题.但是做读操作是不会发生数据冲突问题. 抢火车的例子: 一号窗口和二号窗口同时出售火车第九九张,部分火车票会重复出售. 结论发现,多个线程共享同一个全局成员变量时,做写的操作可能会发生数据冲突问题. 二.线程安全解决办法: 问:如何解决多线程之间线程安全问题 答:使用多线程之间同步synchronized或使用锁(lock). 问:为什么使用线程同步或使

java面试——多线程

背景:java知识比较宽泛,最好对每一类知识点进行分类总结,方便后面学习查看.该文主要用来总结多线程方面的知识点. 并发与并行的概念 并发性(concurrency)和并行性(parallel)是两个概念—— 并行指在同一时刻,有多条指令在多个处理器上同时执行: 并发指在同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得在宏观上具有多个进程同时执行的效果. 出自<疯狂java讲义>第16章 多线程 线程的状态转换 下图表示线程生命周期中5种状态之间的转换: Java线程的6种状态及