关于线程的讲解?(出自Java原著)

什么是线程?线程概念及方法详细讲解 并发:指两个或多个事件在同⼀个时间段内发⽣。 并⾏:指两个或多个事件在同⼀时刻发⽣(同时发⽣)。 在操作系统中,安装了多个程序,并发指的是在⼀段时间内宏观上有多个程序同时运⾏,这在单 CPU 系统中,每⼀时刻只能有⼀道程序执⾏,即微观上这些程序是分时的交替运⾏,只不过是给⼈的感觉是同时运⾏,那是因为分时交替运⾏的时间是⾮常短的。.................. 阅读详情
<script type="text/javascript" src="http://pagead2.googlesyndication.com/pagead/show_ads.js"> </script> Thread Scheduling In Java technology,threads are usually preemptive,but not necessarily Time-sliced(the process of giving each thread an equal amount of CPU time).It is common mistake to believe that "preemptive" is a fancy word for "does time-slicing". For the runtime on a Solaris Operating Environment platform,Java technology does not preempt threads of the same priority.However,the runtime on Microsoft Windows platforms uses time-slicing,so it preempts threads of the same priority and even threads of higher priority.Preemption is not guaranteed;however,most JVM implementations result in behavior that appears to be strictly preemptive.Across JVM implementations,there is no absolute guarantee of preemption or time-slicing.The only guarantees lie in the coder’s use of wait and sleep. The model of a preemptive scheduler is that many threads might be runnable,but only one thread is actually running.This thread continues to run until it ceases to be runnable or another thread of higher priority becomes runnable.In the latter case,the lower priority thread is preempted by the thread of higher priority,which gets a chance to run instead. A thread might cease to runnable (that is,because blocked) for a variety of reasons.The thread’s code can execute a Thread.sleep() call,deliberately asking the thread to pause for a fixed period of time.The thread might have to wait to access a resource and cannot continue until that resource become available. All thread that are runnable are kept in pools according to priority.When a blocked thread becomes runnable,it is placed back into the appropriate runnable pool.Threads from the highest priority nonempty pool are given CPU time. The last sentence is worded loosed because: (1) In most JVM implementations,priorities seem to work in a preemptive manner,although there is no guarantee that priorities have any meaning at all; (2) Microsoft Window’s values affect thread behavior so that it is possible that a Java Priority 4 thread might be running,in spite of the fact that a runnable Java Priority 5 thread is waiting for the CPU. In reality,many JVMs implement pool as queues,but this is not guaranteed hehavior. 线程调度(试翻译,欢迎指正) 在java技术中,线程通常是抢占式的而不需要时间片分配进程(分配给每个线程相等的cpu时间的进程)。一个经常犯的错误是认为“抢占”就是“分配时间片”。 在Solaris平台上的运行环境中,相同优先级的线程不能相互抢占对方的cpu时间。但是,在使用时间片的windows平台运行环境中,可以抢占相同甚至更高优先级的线程的cpu时间。抢占并不是绝对的,可是大多数的JVM的实现结果在行为上表现出了严格的抢占。纵观JVM的实现,并没有绝对的抢占或是时间片,而是依赖于编码者对wait和sleep这两个方法的使用。 抢占式调度模型就是许多线程属于可以运行状态(等待状态),但实际上只有一个线程在运行。该线程一直运行到它终止进入可运行状态(等待状态)或是另一个具有更高优先级的线程变成可运行状态。在后一种情况下,底优先级的线程被高优先级的线程抢占,高优先级的线程获得运行的机会。 线程可以因为各种各样的原因终止并进入可运行状态(因为堵塞)。例如,线程的代码可以在适当时候执行Thread.sleep()方法,故意让线程中止;线程可能为了访问资源而不得不等待直到该资源可用为止。 所有可运行的线程根据优先级保持在不同的池中。一旦被堵塞的线程进入可运行状态,它将会被放回适当的可运行池中。非空最高优先级的池中的线程将获得cpu时间。 最后一个句子是不精确的,因为: (1)在大多数的JVM实现中,虽然不能保证说优先级有任何意义,但优先级看起来象是用抢占方式工作。 (2)微软windows的评价影响线程的行为,以至尽管一个处于可运行状态的优先级为5的java线程正在等待cpu时间,但是一个优先级为4的java线程却可能正在运行。 实际上,许多JVM用队列来实现池,但没有保证行为。
搭建云平台 1 Day 虚拟机安装(超详细) 点击OFF 那个按钮看看网络的地址和速度有没有显示,如果有 则到目前为止都是成功的。Host name随便起一个名字就行了**-_-**文件比较大,这里只是将部分目录大纲截图出来,每个节点里面都包含大厂面经、学习笔记、源码讲义、实战项目、讲解视频,并且后续会持续更新**,如果我们安装的VMware14就会默认为。因为我的是VMware16,所以默认。也是可以的,但是千万不要用。 阅读详情

相关推荐

LiblibAI新手教程:从零开始训练你的第一个LoRA模型(保姆级指南)

本文提供LiblibAI平台上从零开始训练LoRA模型的保姆级教程,涵盖数据准备、参数优化到效果调优全流程。详细解析LoRA技术优势,包括云端计算资源、自动化预处理工具等,帮助新手快速掌握自定义模型训练技巧,实现高效AI绘画创作。

dell8的博客 625

内核层的进程和线程对象

Windows中进程和线程数据结构 1 内核层的进程和线程对象 进程数据结构: typedef struct _KPROCESS { // // The dispatch header and profile listhead are fairly infrequently // referenced. // DISPATCHER_HEADER Header; LIST_ENTRY ProfileListHead; // // T...

maomao171314的专栏 674

LM Studio Bionic:本地AI智能体从部署到实战完整指南

AI智能体作为能够自主规划、执行多步任务的人工智能系统,其核心原理在于结合大语言模型的推理能力与工具调用机制。通过状态保持和任务分解算法,智能体实现了从单次问答到持续协作的技术跃迁。在工程实践中,这种架构显著降低了复杂任务自动化的门槛,特别适用于数据敏感场景和定制化需求。以Tesla V100等专业硬件为例,本地部署能充分发挥其大显存优势,支持更高精度的模型量化格式。在实际应用层面,智能体可无缝集成到代码审查、文档生成等开发工作流中,而LM Studio Bionic通过统一界面整合了模型服务、任务规划器等

weixin_29053695的博客 662

关于线程的讲解(出自Java原著)(转)

关于线程的讲解(出自Java原著)(转)[@more@]Thread SchedulingIn Java technology,threads are usually preemptive,but not necessarily...

129

【实战】ESP32 + LN298N 实现电动推杆的闭环位置伺服控制

本文详细介绍了如何使用ESP32微控制器和LN298N电机驱动模块,为普通电动推杆增加编码器反馈,实现精准的闭环位置伺服控制。文章从硬件选型与接线讲起,深入解析了编码器四倍频计数原理与位置换算,并重点阐述了PID控制算法的核心思想、代码实现及参数整定方法,旨在帮助读者从零构建一个反应迅速、定位精准的智能执行器系统。

weixin_29195615的博客 320

ZBrush 2021来了

这次给大家带来的是:zbrush2021.1.1 win安装教程 1.下载压缩包之后解压到文件夹当中,然后打开ZBrush_2021_Installer.exe进行软件安装, 如下图 2.在这里我们保持默认的简体中文版即可,然后点击确认,如下图 3.第三步我们点击前进即可,如下图 4.第四步我们来到许可协议,在这里我们点击我接受此协议,然后点击前进,如下图 5.第五步我们来到安装目录,在这里我们可以设置安装路径,如下图 6.在这里我将安装目录修改安装到E盘为例,然后点击下一

3D游戏建模 1189

java debug断点的时候其他线程还在跑吗?断点是怎么实现的?(断点调试原理讲解)

Debug断点调试的时候其他线程全部会被挂起,Debug的时候将被断点的行字节码替换为了特殊标识,并在Debug BreakPoint管理器中保存了这行原本的代码字节码是啥,触发断点的时候会发出断点事件、挂起所有线程,实践了也确实是这样。所以在设置断点的时候,jvm做的事情,就是根据断点对应的方法和字节码的位置,找到设置断点的位置,然后把正常的字节码替换为0xca,并保存好原来的字节码用于恢复。平时我们都会使用IDE进行Java的断点调试,你是否有去思考过,为什么我打下一个断点,程序就会停下来?

HumorChen的博客 1577

抖音短视频数据抓取实战系列(一)——模拟器性能对比与优化配置

本文是抖音短视频数据抓取实战系列的开篇,重点探讨了模拟器选型与优化配置。通过对比雷电、夜神、逍遥三大主流模拟器在性能、抖音兼容性及抓包友好度上的表现,文章指出雷电模拟器因其稳定的桥接网络模式和良好的兼容性,是数据抓取的优选。并提供了雷电模拟器从安装、网络桥接到系统优化的详细配置指南,旨在帮助读者构建稳定高效的抓取环境。

weixin_29230901的博客 248

java线程池讲解

线程池其实是一种池化技术的实现,池化技术的核心思想其实就是实现资源的复用,避免资源的重复创建和销毁带来的性能开销。在线程池中,线程池可以管理一堆线程,让线程执行完任务之后不会进行销毁,而是继续去处理其他线程已经提交的任务。实际项目中,Executors这个工具类来创建的线程池其实都无法满足使用场景,这就涉及到如何构造线程池、设置合理参数了。1)线程数线程数的设置主要取决于业务是IO密集型还是CPU密集型。CPU密集型指的是任务主要使用来进行大量的计算,没有什么导致线程阻塞。

u014415844的博客 1869

无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)

无人机避障——4DMmvRadar三维点云坐标转换到无人机坐标系(三)

weixin_45390670的博客 1869

[Dify实战] 合同审阅助手:识别风险条款、生成修改建议-带绑定资源

摘要: Dify合同审阅助手通过AI技术提升合同审阅效率,快速识别风险条款并输出结构化修改建议。方案包括合同输入、关键条款识别、风险评级和报告生成流程,重点关注付款、责任限制等核心条款。采用分层风险分级(高/中/低)和"红线清单"机制,确保审阅标准化。实施建议先建立条款库和模板,通过样本测试优化模型,定期更新规则库。该方案可缩短审阅时间50%以上,提高风险识别准确率,最终实现法务经验的可复用沉淀。

技术小甜甜:传播可落地技术,帮助个人和企业降低解决真实场景问题的成本 599

Java——线程池详细讲解

​线程池其实就是一种多线程处理形式,处理过程中可以将任务添加到队列中,然后在创建线程后自动启动这些任务。​ 这里的线程就是我们前面学过的线程,这里的任务就是我们前面学过的实现了Runnable或Callable接口的实例对象​ 核心线程数的设计需要依据任务的处理时间和每秒产生的任务数量来确定​ 例如:执行一个任务需要0.1秒,系统百分之80的时间每秒都会产生100个任务,那么要想在1秒内处理完这100个务,就需要10个线程,此时我们就可以设计核心线程数为10;

weixin_51351637的博客 4617

知识图谱构建中的数据清洗:AI原生应用高质量图谱的前提

数据清洗是知识图谱构建的核心前置环节,直接决定AI原生应用(如智能问答、个性化推荐、决策支持系统)的图谱质量与应用效能。本文以第一性原理为起点,系统解析数据清洗的理论框架、技术架构与工程实践,覆盖从多源异构数据的噪声检测到高质量知识三元组(实体-关系-实体)生成的全流程。通过层次化概念映射(专家→中级→入门)、数学形式化建模及工业级案例分析,揭示数据清洗在解决实体歧义、关系冲突、结构不一致等关键问题中的技术逻辑,并展望基于大模型的智能清洗范式演化。Completeness(完整性)

移动开发前沿的博客 405

Java多线程详细讲解

*** ThreadPoolExecutor 自定义线程池*/// int corePoolSize, 核心线程数// int maximumPoolSize, 线程池最大线程个数// long keepAliveTime, 非核心线程最大存活时间// TimeUnit unit, //时间单位// BlockingQueue<Runnable> workQueue //存放任务的阻塞队列。

m0_71394794的博客 776

pscad IEEE标准系统搭建说明

pscad IEEE标准系统搭建说明,包含典型的IEEE 9节点、14节点、30节点、39节点和118节点系统。内含标准测试系统的原始数据和潮流结果。

VB摄像头监控

该VB模块可对摄像头捕获的画面进行录像等,可在创建的窗口进行控制

Java:多线程讲解

简单举例:某网盘可以同时下好几个文件,这就是所谓的多线程。多个线程,同时操作同一个共享资源的时候,可能会出现业务安全问题。用一个取钱案例讲解线程安全以及如何解决:// 卡号// 余额。// 小明 小红同时过来的// 先搞清楚是谁来取钱?// 1、判断余额是否足够System.out.println(name + "来取钱" + money + "成功!");System.out.println(name + "来取钱后,余额剩余:" + this.money);}else {

m0_74098386的博客 1120

假人有限元模型

假人模型,车辆碰撞假人有限元模型,适合做乘员安全的研究者利用

Java 线程池完整讲解

设置线程名前缀,便于日志排查和线程管理。Java 线程池执行任务时,优先使用核心线程,其次是任务队列,再扩展最大线程数,最后使用拒绝策略兜底,并始终优先复用空闲线程资源。

chenxuefeng_accp的专栏 744

Java线程池到底是怎么运行的?(二)

前言上篇文章,我们讲解了Java线程池的正确使用方法以及线程池运行基本原理,本篇文章我们深入到源码视角来验证我们的运行基本原理是否如我们所想的那样。一、源码分析1.1 ThreadPoolExecutor的类图结构如下:Executor: 仅提供了execute()一个执行任务的通用接口,使得任务提交与线程调度、执行细节分离。具体实现交由ThreadPoolExecutor类去实现的。Execut...

ShiLuoHeroKing的博客 957

java讲解之线程篇

关于Java线程我想说的话----0002 接着我上一篇线程讲解的文章,现在先讲一讲线程的常用方法; 1.start(),线程的启动方法,也就是把线程加入就绪队列,等待分配cpu; 2.run(),这是线程运行时所运行的代码块; 3.wait(),阻塞状态的等待状态,可能是等待资源等,此是线程会让出cpu,如果此线程有锁 还会释放锁,通常在run()函数里; 4.sleep(time),睡眠状态,...

whyoname的博客 168

Java线程池到底是怎么运行的?(一)

前言由于线程池相关核心内容较长,为了方便大家阅读,会将内容分为上下两篇,上篇主要讲解如何使用,以及线程池的基本原理;下篇深入源码展开分析验证原理的正确性。一、线程池的创建与使用?方案1:使用Executors工具类创建(强烈不推荐)//初始化一个核心线程数为0、最大线程数为Integer.MAX_VALUE,队列为SynchronousQueue,线程空闲时间为60s的线程池 Executor...

ShiLuoHeroKing的博客 761

java不同线程讲解以及线程池的使用

多种线程的使用

weixin_59100424的博客 1145

Java创建线程

既然说到线程,在这里就给大家普及一下线程。 线程(Thread): 是操作系统能够进行运算调度的最小单位。 它被包含在进程之中,是进程中的实际运作单位。 一个线程指的是进程中一个单一顺序的控制流。 🥂🥂🥂 其实:进程在我们计算机中我们随时都在使用:按住 Ctrl + shift + esc 这个就是一个进程,在计算机中,线程就是进程中的一个执行单元。 那么,进程是什么呢? 进程:简简单单,我们日常中使用的QQ就是一个进程,进程可以理解为就是一个软件,线程则就是这个软件中的一些功

分享it知识! 7911

Java 多线程(超详细讲解)上篇

Thread类提供了大量的方法来控制和操作线程。方法描述类型Thread()创建Thread对象构造方法创建Thread对象,target为run()方法被调用的对象构造方法创建Thread对象,target为run()方法被调用的对象,name为新线程的名称构造方法void run()执行任务操作的方法实例方法使该线程开始运行,JVM将调用该线程的run()方法实例方法在指定的毫秒数内让当前正在运行的线程休眠(暂停运行)静态方法返回当前线程对象的引用静态方法。

AE_BD的博客 1779

JAVA 线程详细讲解

System.out.println(hread.currentThread().getName() + "线程的默认优先级是:" + currentThread.getPriority());对于单核的CPU来说,在某一个时间点上实际上只能处理一件事情,但是由于CPU的处理速度极快,多个线程之间频繁切换执行,给别人的感觉是:多个事情同时在做!(重点:★★★★★)以后在开发中,我们的项目都是运行在服务器当中,而服务器已经将线程的定义,线程对象的创建,线程的启动等,都已经实现完了。//t.run();

sunyan5211314的博客 702

Java多线程之线程池深入讲解

文章目录1 线程池介绍1.1 线程池概念1.2 线程池好处2 线程池的使用2.1 线程池的创建2.1.1 通过ThreadPoolExecutor创建2.1.2 通过Executors方式创建2.2 线程池提交的返回值2.2.1 无返回值2.2.1.1 execute提交2.2.1.2 实现Runnable接口2.2.2 有返回值2.2.2.1 submit提交2.2.2.2 实现Callable接口2.2.3 使用例子2.3 线程池的关闭3 线程池的分析3.1 流程分析3.2 源码分析4 合理的配置线程池

上善若泪 1966
上一篇: Java's top guns -- 2002 Editors' Choice Awards
下一篇: 日立今夏全面更新Java开发工具
java169
博客等级 码龄19年 27粉丝 2568原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

当前余额3.43元 前往充值 >
需支付:10.00元
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付元
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值