Java多线程之线程生命周期

一、Java线程的调度方法:

1、同优先级线程组成先进先出队列(先到先服务),使用时间片策略。
2、对高优先级,使用优先调度的抢占式策略。

二、Java线程的优先级:

1、线程的优先级等级
MAX_ PRIORITY: 10、 MIN_ PRIORITY: 1、 NORM PRIORITY: 5
2、涉及的成员方法
getPriority():返回线程优先值。
setPriority(int newPriority):改变线程的优先级。
线程创建时继承父线程的优先级。
低优先级只是获得调度的概率低,并非一定是在高优先级线程之后才被调用。

三、Java线程的分类:

Java中的线程分为两类:一种是守护线程,一种是用户线程。
●它们在几乎每个方面都是相同的,唯一的区别是判断JVM何时离开。
●守护线程是用来服务用户线程的,通过在start()方法前调用。
thread.setDaemon(true)可以把一个用户线程变成一个守护线程。
●Java垃圾回收就是一个典型的守护线程。
●若JVM中都是守护线程,当前JVM将退出。(兔死狗烹,鸟尽弓藏)

JDK中用Thread.State类定义了线程的几种状态:
要想实现多线程,必须在主线程中创建新的线程对象。Java语言使用Thread类及其子类的对象
来表示线程,在它的一个完整的生命周期中通常要经历如下的五种状态:
(1)新建:当一个Thread类或其子类的对象被声明并创建时,新生的线程对象处于新建状态。
(2)就绪:处于新建状态的线程被star()后,将进入线程队列等待CPU时间片,
此时它已具备了运行的条件,只是没分配到CPU资源。
(3)运行:当就绪的线程被调度并获得CPU资源时,便进入运行状态,
run()方法定义了线程的操作和功能。
(4)阻塞:在某种特殊情况下,被人为挂起或执行输入输出操作时,
让出CPU并临时中止自己的执行,进入阻塞状态。
(5)死亡:线程完成了它的全部工作或线程被提前强制性地中止或出现异常导致结束。

原文地址:https://www.cnblogs.com/ZengBlogs/p/12203363.html

时间: 2024-08-13 13:24:29

Java多线程之线程生命周期的相关文章

Java多线程与并发——线程生命周期和线程池

线程生命周期:  线程池:是预先创建线程的一种技术.线程池在还没有任务到来之前,创建一定数量的线程,放入空闲队列中,然后对这些资源进行复用.减少频繁的创建和销毁对象. java里面线程池的顶级接口是Executor,是一个执行线程的工具. 线程池接口是ExecutorService. java.util.concurrent包:并发编程中很常用的实用工具类 Executor接口:执行已提交的Runnable任务的对象. ExecutorService接口:Executor提供了管理终止的方法,以

多线程(四)线程生命周期和线程池

一.线程生命周期 线程的5种状态: 新建(New) ,就绪(Runnable),运行(Running),阻塞(Blocked),死亡(Dead)     线程生命周期图: 二.线程池 1.为什么要使用线程池: (1).提高性能 系统启动一个新线程的成本是比较高的,而使用线程池避免了频繁的创建和销毁线程,可以很好地提高性能. 线程池在系统启动时即创建大量空闲的线程,程序将一个Runnable对象或Callable对象传给线程池,线程池就会自动 启动一个线程来执行它们的run()或call()方法,

iOS多线程全套:线程生命周期,多线程的四种解决方案,线程安全问题,GCD的使用,NSOperation的使用

目的 本文主要是分享iOS多线程的相关内容,为了更系统的讲解,将分为以下7个方面来展开描述. 多线程的基本概念 线程的状态与生命周期 多线程的四种解决方案:pthread,NSThread,GCD,NSOperation 线程安全问题 NSThread的使用 GCD的理解与使用 NSOperation的理解与使用 Demo在这里:WHMultiThreadDemo Demo的运行gif图如下: 一.多线程的基本概念 进程:可以理解成一个运行中的应用程序,是系统进行资源分配和调度的基本单位,是操作

Java学习之==>Java线程生命周期与状态切换

一.Java线程生命周期与状态切换 这些状态的描述可以总结成下图: NEW 一个刚创建但尚未启动的Java线程实例就是处于 NEW 状态 public class App { public static void main(String[] args) { Thread thread = new Thread(); Thread.State state = thread.getState(); System.out.println(state); } } // 输出结果 NEW RUNNABLE

java基础——线程的常用方法和线程生命周期

线程的常用方法 package thread; /* 测试Thread类中的常用方法: 1.start() 2.run():重写Thread方法,将线程要执行的操作声明在方法中 3.Thread.currentThread():静态方法,返回执行当前代码的线程 4.getName():获取当前线程的名字 5.setName():设置当前线程的名字 6.yield():当前线程交出cpu执行权 7.join():在线程a中调用线程b的join方法,此时线程a进入阻塞态,直到线程b完全执行完后,a才

线程八大基础核心四(线程生命周期)

1.引子 在java多线程并发编程中,有八大基础核心.考考你:看看都有哪八大基础核心呢?它们分别是: 1.创建线程的方式 2.线程启动 3.线程停止 4.线程生命周期 5.线程相关的方法 6.线程相关的属性 7.线程异常处理 8.线程安全 今天我们从第四个基础核心开始:线程生命周期 2.考考你 #前情回顾: 在java编程语言中,从线程创建,到线程执行结束,会经过一系列状态的转化,称为线程的生命周期 #考考你: 1.你知道线程生命周期中有哪些状态吗? 2.你知道各种状态对应的含义吗? 3.一图胜

Java多线程和线程池(转)

1.为什么要使用线程池 在java中,如果每个请求到达就创建一个新线程,开销是相当大的.在实际使用中,服务器在创建和销毁线程上花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多.除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源.如果在一个jvm里创建太多的线程,可能会使系统由于过度消耗内存或“切换过度”而导致系统资源不足.为了防止资源不足,服务器应用程序需要采取一些办法来限制任何给定时刻处理的请求数目,尽可能减少创建和销毁线程的次数,特别是一些资源

java ->多线程_线程池

线程池概念 线程池,其实就是一个容纳多个线程的容器,其中的线程可以反复使用,省去了频繁创建线程对象的操作,无需反复创建线程而消耗过多资源. 我们详细的解释一下为什么要使用线程池?(程序优化) 在java中,如果每个请求到达就创建一个新线程,开销是相当大的.在实际使用中,创建和销毁线程花费的时间和消耗的系统资源都相当大,甚至可能要比在处理实际的用户请求的时间和资源要多的多.除了创建和销毁线程的开销之外,活动的线程也需要消耗系统资源.如果在一个jvm里创建太多的线程,可能会使系统由于过度消耗内存或"

这么理解线程生命周期,是不是很简单?

| 好看请赞,养成习惯 你有一个思想,我有一个思想,我们交换后,一个人就有两个思想 If you can NOT explain it simply, you do NOT understand it well enough 现陆续将Demo代码和技术文章整理在一起 Github实践精选 ,方便大家阅读查看,本文同样收录在此,觉得不错,还请Star?? 为什么要了解线程的生命周期? 之前写过 Spring Bean 生命周期三部曲: Spring Bean生命周期之缘起 Spring Bean生