Java-API简析_java.lang.Thread类(基于 Latest JDK)(浅析源码)

news2024/12/23 10:53:36

【版权声明】未经博主同意,谢绝转载!(请尊重原创,博主保留追究权)
https://blog.csdn.net/m0_69908381/article/details/131467981
出自【进步*于辰的博客】

因为我发现目前,我对Java-API的学习意识比较薄弱,需要慢慢习惯使用Java-API,乃至剖析源码来提升自己的源码阅读能力和编码素质。
大家如果需要Java-API文档,我上传了【https://download.csdn.net/download/m0_69908381/87691693】。

文章目录

  • 1、概述
  • 2、嵌套类摘要
    • 2.1 static enum Thread.State
    • 2.2 static interface Thread.UncaughtExceptionHandler

1、概述

所有已实现的接口:
Runnable


public class Thread extends Object implements Runnable

线程 是程序中的执行线程。Java 虚拟机允许应用程序并发地运行多个执行线程。

每个线程都有一个优先级,高优先级线程的执行优先于低优先级线程。每个线程都可以或不可以标记为一个守护程序当某个线程中运行的代码创建一个新 Thread 对象时,该新线程的初始优先级被设定为创建线程的优先级,并且当且仅当创建线程是守护线程时,新线程才是守护程序。

当 Java 虚拟机启动时,通常都会有单个非守护线程(它通常会调用某个指定类的 main() 方法)。Java 虚拟机会继续执行线程,直到下列任一情况出现时为止:

  • 调用了 Runtime 类的 exit() 方法,并且安全管理器允许退出操作发生。
  • 非守护线程的所有线程都已停止运行,无论是通过从对 run() 方法的调用中返回,还是通过抛出一个传播到 run() 方法之外的异常。

创建新执行线程有两种方法。一种方法是将类声明为 Thread 的子类。该子类应重写 Thread 类的 run() 方法。接下来可以分配并启动该子类的实例。例如,计算大于某一规定值的质数的线程可以写成:


class PrimeThread extends Thread {
    long minPrime;
    PrimeThread(long minPrime) {
        this.minPrime = minPrime;
    }

    public void run() {
        // compute primes larger than minPrime
         . . .
    }
}

然后,下列代码会创建并启动一个线程:

PrimeThread p = new PrimeThread(143);
p.start();

创建线程的另一种方法是声明实现 Runnable 接口的类。该类然后实现 run() 方法。然后可以分配该类的实例,在创建 Thread 时作为一个参数来传递并启动。采用这种风格的同一个例子如下所示:


class PrimeRunimplements Runnable {
    long minPrime;
    PrimeRun(long minPrime) {
        this.minPrime = minPrime;
    }

    public void run() {
        // compute primes larger than minPrime
         . . .
    }
}


然后,下列代码会创建并启动一个线程:

PrimeRun p = new PrimeRun(143);
new Thread(p).start();

每个线程都有一个标识名,多个线程可以同名。如果线程创建时没有指定标识名,就会为其生成一个新名称。

从以下版本开始:
JDK1.0
另请参见:
Runnable、Runtime.exit(int)run()stop()

2、嵌套类摘要

2.1 static enum Thread.State

线程状态。
说明:
先看源码。
在这里插入图片描述
大家先看个图。
在这里插入图片描述
线程的生命周期中,一共6个线程状态,各个线程状态的注释见上图源码。
关于各个线程状态之间的变动情况,后续补充。

2.2 static interface Thread.UncaughtExceptionHandler

当 Thread 因未捕获的异常而突然终止时,调用处理程序的接口。


本文持续更新中。。。

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/702341.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

九类AI应用和五个简单LLM的Prompt技巧

一、九类AI应用 AI艺术:造梦日记、MidJourney、Stable Diffusion、Adobe、Stability、Remove AI聊天:ChatGPT、Discord、文心一言、Google Bard、星火、Character.Al AI社区:Kaggle、Hugging Face、H20、Github、Replicate、OpenCV AI创造…

chatgpt赋能python:Python随机打乱列表:如何使用Python打乱您的数据?

Python随机打乱列表:如何使用Python打乱您的数据? 在数据处理中,列表是一种常见的数据结构。然而,当数据量很大时,列表的排序方式也变得重要。为了更好地处理数据,我们需要知道如何使用Python打乱列表。 …

k8s操作命令

系列文章目录 文章目录 系列文章目录一、k8s基础命令1.陈述式资源管理方法:2.基础命令 总结 一、k8s基础命令 1.陈述式资源管理方法: 1.kubernetes 集群管理集群资源的唯一入口是通过相应的方法调用 apiserver 的接口 2.kubectl 是官方的CLI命令行工具…

项目——学生信息管理系统2

目录 用户类型,我们创建一个枚举类 在 org.xingyun.model 包下创建 UserType 枚举类 快速生成 get set 方法 修改代码,下拉框的内容,用我们的枚举类型 给登录按钮绑定事件 我们在 org.xingyun.utils 包下创建一个工具类 Eclipse 智能提…

【Java基础】volatile关键字

关于作者:CSDN内容合伙人、技术专家, 从零开始做过日活千万级APP。 专注于分享各领域原创系列文章 ,擅长java后端、移动开发、人工智能等,希望大家多多支持。 目录 一、导读二、概览2.1 作用2.2 多线程共享变量的访问流程2.3 多线…

EMC学习笔记(十二)跨分割区及开槽的处理

跨分割区及开槽的处理 1.开槽的产生1.1 对电源/地平面分割造成的开槽1.2 通孔过于密集形成开槽 2.开槽对PCB板EMC性能的影响2.1 高速信号与低速信号的面电流分布2.2 分地的概念2.3 信号跨越电源平面或地平面上的开槽的问题 3.对开槽的处理3.1 需要严格的阻抗控制的高速信号线&a…

基于Hadoop的豆瓣电影的数据抓取、数据清洗、大数据分析(hdfs、flume、hive、mysql等)、大屏可视化

目录 项目介绍研究背景国内外研究现状分析研究目的研究意义研究总体设计数据获取网络爬虫介绍豆瓣电影数据的采集 数据预处理数据导入及环境配置Flume介绍Hive介绍MySQL介绍Pyecharts介绍环境配置及数据加载 大数据分析及可视化豆瓣影评结构化分析豆瓣电影类型占比分析豆瓣电影…

Vector - CAPL - 常见缩写词

我们在CAPL脚本开发过程中,为了表示的方便,我们会使用大量的缩写词,为了方便自己的使用,大家也可作为参考使用,这里就整理出来一部分常用缩写,以及中英文注释。 CAPL开发中常见缩写 缩写英文解释中文ABSA…

数据安全系列(二)丨数据分类分级

1 数据分类分级的依据 2016年11月,《网络安全法》明确将“数据分类”作为网络安全保护法定义务之一。 2021年9月,《数据安全法》再次具体确立了“数据分类分级保护制度”及其基本原则。 《数据安全法》 第二十一条 国家建立数据分类分级保护制度&am…

Ansible与Shell结合使用

利用Shell脚本运行Ansible命令: 本实验采用rhel8.3。这次将使用 yum_repository 模块远程写入仓库配置。 写入仓库: Shell脚本: #!/bin/bashansible dev -m yum_repository -a namemyBase description"myTestRepo \ baseurl"/m…

物联网的未来:连接万物的智能世界

第一章:引言 在当今数字化时代,物联网(Internet of Things,IoT)已经成为了人们生活中不可或缺的一部分。物联网技术的快速发展和广泛应用,将为我们带来一个连接万物的智能世界。本文将探讨物联网的未来发展…

内核态与用户态详解(嵌入式学习)

内核态与用户态 内核态概念特点和功能 用户态概念特点和功能 内核态与用户态如何切换?总结 内核态 概念 内核态(Kernel Mode)是计算机操作系统中的一种特权级别或运行模式。在内核态下,操作系统拥有最高的权限和访问系统资源的能…

vue-tsc --noEmit导致打包报TS类型错误

🐱 个人主页:不叫猫先生,公众号:前端舵手 🙋‍♂️ 作者简介:2022年度博客之星前端领域TOP 2,前端领域优质作者、阿里云专家博主,专注于前端各领域技术,共同学习共同进步…

使用预计算的纹理替换Hololens 2屏幕的内容

需求:自己渲染器生成的纹理是A,Unity里的virtual camera生成的纹理是B,正常情况下眼镜里看到的是B,我想着直接用A替换掉B。 了解Unity渲染脚本的生命周期: 对于我们的需求,关键的是Scene Rendering这一块内…

基于ChatGLM2和langchain的本地知识库问答的实战方案

大家好,我是herosunly。985院校硕士毕业,现担任算法研究员一职,热衷于机器学习算法研究与应用。曾获得阿里云天池比赛第一名,CCF比赛第二名,科大讯飞比赛第三名。拥有多项发明专利。对机器学习和深度学习拥有自己独到的见解。曾经辅导过若干个非计算机专业的学生进入到算法…

【C语言】计算机是如何存储整数和小数的?

文章目录 前言一、正整数和0二、负整数三、小数1、定点数(1)什么是定点数(2)表示精度(3)表示范围(4)优缺点 2、浮点数(1)什么是浮点数(2&#xff…

Linux——搭建jdk环境

标题Linux——搭建jdk环境 Linux搭建jdk,案例采用jdk8 1.检查linux位数(64和32位) [rootnode1 /]# getconf LONG_BIT 642.下载对应的linux JDK包,这里使用jdk8 下载jdk8 : 链接: https://www.oracle.com/java/technologies/downloads/#java8 3、上…

苹果又撕下了国产手机遮羞布,国内消费者最爱iPhone

618结束之后,各个国产手机品牌都说自己表现优秀,比去年增长了多少多少,不过随着分析机构给出具体的数据,国产手机可谓被撕下了遮羞布,国内消费者最爱的还是iPhone。 分析机构指出618期间iPhone的销量高达562万部&#…

【互斥锁与信号量】线程通信:互斥锁(mutex)与信号量(semaphore)

目录 0. 互斥锁与信号量 同步互斥概述 1. 互斥锁 1.1 互斥锁的概念 1.2 互斥锁初始化:pthread_mutex_init函数 1.3 互斥锁上锁:pthread_mutex_lock函数 1.4 互斥锁解锁:pthread_mutex_unlock函数 1.5 销毁互斥锁:pthread_…

chatgpt赋能python:Python重写父类方法:在OOP编程中的应用

Python重写父类方法:在OOP编程中的应用 在Python的面向对象编程范式中,继承是一种非常重要的概念。当我们声明一个类时,我们可以通过继承来扩展类的功能并避免重复编写代码。在这个过程中,很可能你会碰到需要重写父类方法的情况。…