java中线程的控制

线程的控制:

Java中的线程支持提供了一些便捷的工具方法,通过这些便捷的工作方法可以更好的控制线程的执行。

一、join线程:

Thread提供了让一个线程等待另一个线程完成的方法——join()方法。当某个程序执行流中调用其他线程的join方法时,调用线程将被阻塞,直到被join方法加入的join线程执行完为止。

 

Join()方法有如下3种重载形式:

1、join():等待被join的线程执行完成。

2、join(long millis):等待被join的线程的时间最长为millis 毫秒,如果在millis 毫秒内被join 的线程还没有执行结束,则不再等待。

3、Join(long millis , int nanos):等待被join的线程的时间最长为millis 毫秒加nanos 毫微秒。

 

 1 public class JoinThread extends Thread{
 2     private int i;
 3     public void run(){
 4         for(;i<30;i++){
 5             try{sleep(1000);
 6             System.out.println("线程的名字:"+getName()+" "+i);}catch(Exception e){
 7                 System.out.println(e);
 8             }    
 9         }
10     }
11     public static void main(String[] args){
12         JoinThread j=new JoinThread();
13             for(int k=0;k<100;k++){
14                 try{
15                 Thread.sleep(1000);
16                 System.out.println("当前线程的名字为:"+Thread.currentThread().getName()+" "+k);
17                 }catch(Exception e){
18                     System.out.println(e);
19                 }
20                 if(k==5){
21                     j.start();
22                 }
23                 if(k==10){
24                     try{j.join();}catch(Exception e){
25                         System.out.println(e);
26                     }
27                 }
28             }
29         }
30 } 

 

 

 

 

二、interrupt方法中断线程:

 stop()方法也是中断线程的方法,但是已经弃用了。

 interrupt方法可以用来请求终止线程。

 当对一个线程调用interrupt方法时,线程的中断状态将被置位。这时每个线程都具有的boolean 标志,每个线程都应该不时地检查这个标志,以判断线程是否被终端。

被中断的程序可以决定如何响应中断。

 

三、线程睡眠:sleep

如果需要让当前正在执行的线程暂停一段时间,并进入阻塞状态,则可以通过调用Thread类的静态sleep()方法来实现。

当当前线程调用sleep()方法进入阻塞状态后,在其睡眠时间段内,该线程不会获得执行的机会,即使系统中没有其他可执行的线程,处于sleep中的线程也不会执行,因此sleep方法常用来暂停程序的执行。

 

四、线程的让步:yield

yield方法是一个和sleep方法有点相似的方法,它也是Thread类提供的一个静态方法,它也可以让当前正在执行的线程暂停,但它不会阻塞该线程,他只是让该线程转入就绪状态。Yield方法只是让当前的线程暂停一下,让系统的线程调度器重新调度一次。

 

 

 

总结一下yield和sleep方法的区别:

1、Sleep方法暂停但前线程后,会给其他线程执行机会,不会理会其他线程的优先级;但yield方法只会给优先级相同,或优先级更高的线程执行机会。

2、Sleep方法会将线程进入阻塞状态,知道经过阻塞时间才会转入就绪状态;而yield方法不会将线程转入阻塞状态,他只是强制当前线程进入就绪状态。

3、Sleep方法会抛出异常,而yield方法不会抛出异常。

转载于:https://www.cnblogs.com/teng-IT/p/4445175.html

双目相机立体匹配算法概述(含Python代码) 立体匹配任务是计算机视觉中的一个重要问题,旨在从一对具有相同场景的图像中估计每个像素的视差(disparity)。本文对现有的传统算法和深度学习算法进行了综述,以便于各位选择合适的立体匹配算法用于深度估计或三维建模。 阅读详情

相关推荐

汇川EASY系列之以太网通讯(MODBUS_TCP做从站)

汇川easy系列PLC做MODBUS_TCP从站,,ModbusTCP服务器默认开启,无需设置通信协议(即不需要配置),端口号为“502”。ModbusTCP从站最多支持31个ModbusTCP客户端(ModbusTCP主站)同时连接。

这是一个长期关注工控行业技术的博客,实现0-1的突破,期待您的关注和留言 8902

Java中线程知识--线程的控制(一)

关于线程的创建、启动、运行以及其状态前面描述的差不多,接下来看如何操控线程 关于后台线程与 join线程 其任务主要为其他线程提供一系列服务,被称为"守护线程",典型 的就是JVM的垃圾回收机制. 其特征是随前台所有线程死亡而死亡. 调用线程的 setDaemon(ture) 方法可以使当前调用线程成为后台线程 测试代码 package com.MrLiu.group; import java...

weixin_44363770的博客 166

基于 YOLO + SAM 的自动图像标注实战

摘要: 本文提出一种基于YOLO检测和SAM分割的自动化数据标注流水线方案,通过YOLO定位目标并生成检测框,再以检测框为提示驱动SAM完成精细分割,最终输出YOLO格式的标注文件。该方案将人工标注升级为半自动流程,显著提升标注效率,尤其适用于多类别、大规模图像的实例级标注需求。代码模块化设计支持模型灵活替换,并集成异常处理与进度可视化功能。虽依赖YOLO检测质量且对小目标存在局限,但作为工程落地方案,可有效降低私有数据集构建成本,适用于工业检测、遥感等场景的冷启动标注。

qq_64366203的博客 1149

java中线程控制方法_Java 控制线程的方法

Java 的线程支持提供了一些便捷的工具方法,通过这些便捷的工具方法可以很好地控制线程的执行。join 线程Thread 提供了让一个线程等待另一个线程完成的方法—— join() 方法。当在某个程序执行流中调用其他线程的 join() 方法时,调用线程将被阻塞,直到被 join() 方法加入的 join 线程执行完为止。join() 方法通常由使用线程的程序调用,以将大问题划分成许多小问题,每个...

weixin_31826689的博客 416

幸狐RV1106开发板实战:5分钟搞定Yolo8模型部署(附避坑指南)

本文详细介绍了在幸狐RV1106开发板上快速部署YOLOv8模型的实战流程。通过RKNN-Toolkit2工具链,将ONNX模型转换为RV1106 NPU专用的RKNN格式,并完成交叉编译与上板运行。文章重点分享了环境搭建、模型转换的关键步骤以及常见的避坑指南,帮助开发者高效实现边缘AI目标检测应用。

weixin_28677451的博客 914

期货分仓系统CTP协议/国内期货软件源码

期货分仓系统与CTP协议以及国内期货软件源码是期货交易技术领域的几个重要方面。

q2247238820的博客 962

java 中线程执行顺序控制

Thread t1 = new Thread(new Runnable() { @Override public void run() { System.out.println("t1"); } }); Thread t2 = new Thread(new Runnable() { @Override public void run() {

hey Man 1万+

34、实数域上高效负循环卷积算法解析

本文介绍了一种高效的实数域负循环卷积算法,通过引入离散傅里叶负循环变换(DFNT)避免传统方法的冗余,显著提升计算效率。文章详细分析了算法原理、误差传播机制,并推导出误差与方差界,提出无误差和基于3σ规则的参数设置方案。结合Cooley-Tukey与Gentleman-Sande FFT路径优化,实验验证了算法在不同精度和多项式长度下的性能优势与结果正确性,为密码学与信号处理等领域提供了高精度、高性能的卷积计算解决方案。

salt的博客 115

java中线程执行顺序控制

一:join()方法. thread.Join把指定的线程加入到当前线程,可以将两个交替执行的线程合并为顺序执行的线程。比如在线程B中调用了线程A的Join()方法,直到线程A执行完毕后,才会继续执行线程B。 public class JoinTest2 {       // 1.现在有T1、T2、T3三个线程,你怎样保证T2在T1执行完后执行,T3在T2执行

E01014165的专栏 6250

红火蚁巢穴AI智能识别,提供方案与思路!

🏆本文收录于 《全栈 Bug 调优(实战版)》 专栏。专栏聚焦真实项目中的各类疑难 Bug,从成因剖析 → 排查路径 → 解决方案 → 预防优化全链路拆解,形成一套可复用、可沉淀的实战知识体系。无论你是初入职场的开发者,还是负责复杂项目的资深工程师,都可以在这里构建一套属于自己的「问题诊断与性能调优」方法论,助你稳步进阶、放大技术价值 。

**My Coding Family** 1045

ER图从入门到精通:数据库建模全攻略

本文为数据库建模领域的 ER 图全面指南,系统解析从基础概念到实战应用的核心要点。首先介绍 ER 图的定义、三大组成元素(实体、属性、关系)及三种基础关系类型(一对一、一对多、多对多);其次详解绘制流程,涵盖工具选择(如 Visio、PowerDesigner)、需求分析方法及实体 - 属性 - 关系的分步建模技巧;进一步探讨弱实体、复合属性等高级概念,结合范式理论讲解模型优化策略;针对实体属性混淆、关系类型误判等常见问题提供解决方案;最后通过电商系统、图书馆管理系统等实际案例展示 ER 图设计全流程。

邓邓子的博客 4213

java中线程知识----Condition控制线程

线程除中可以使用 Condition类来进行 线程的通信,此时线程同步使用的显式的同步锁Lock 使用Condition可以让得到锁的却无法继续执行的线程对象释放锁,也可以唤醒其他处于等待的线程 Condition被绑定在一个Lock上面,需要 获取Condition对象就需要调用lock的newCondition()方法获取,此时condition对象就直接拥有了同步监视器的功能,而lock则代...

weixin_44363770的博客 232

层层剖析,让你彻底搞懂Self-Attention、MultiHead-Attention和Masked-Attention的机制和原理

本文内容 本文基于李宏毅老师对 Self-Attention 的讲解,进行理解和补充,并结合Pytorch代码,最终目的是使得自己和各位读者更好的理解Self-Attention 李宏毅Self-Attention链接: https://www.youtube.com/watch?v=hYdO9CscNes PPT链接见视频下方 通过本文的阅读,你可以获得以下知识: 什么是Self-Attention,为什么要用Self-Attention? Self-Attention是如何做的? Self-Atten

iioSnail的博客 2万+

JAVA中线程的生命周期和状态控制

一、线程的生命周期 线程状态转换图: 1、新建状态 用new关键字和Thread类或其子类建立一个线程对象后,该线程对象就处于新生状态。处于新生状态的线程有自己的内存空间,通过调用start方法进入就绪状态(runnable)。 注意:不能对已经启动的线程再次调用start()方法,否则会出现Javalang.IllegalThreadStateException异常。 2、就绪状态...

qq_40285302的博客 238

精雕软件(JDpaint) 5.5 绿色版

精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版精雕软件(JDpaint) 5.5 绿色版

计算机控制技术及应用

《计算机控制技术及应用》通过总结作者的科研成果和吸收国内外的先进理论、方法和技术,以计算机控制系统的网络化、开放化、智能化和集成化发展趋势为主线索,主要介绍计算机控制系统的基本概念和计算机控制系统的典型形式,计算机控制系统的数学描述与基本分析方法,以及数字PID控制器、最少拍控制系统、达林算法、状态变量设计法等设计方法及其各种改进算法。重点突出计算机控制系统输入输出通道接口的设计方法和典型控制系统的设计案例与实现方法等。

Java中线程run方法执行无限循环,调用布尔类型数据控制线程结束。

AIOT魔法师 4078

IDEA的使用指南

IDEA基于java的使用手册,可以最快速的上手,在使用中不断的丰富自己的使用技巧.

java中线程控制方法的说法正确的是_java多线程试题_答案

java多线程一.选择题1.下列说法中错误的一项是(A)A.线程就是程序B.线程是一个程序的单个执行流B.多线程是指一个程序的多个执行流D.多线程用于实现并发2.下列哪个一个操作不能使线程从等待阻塞状态进入对象阻塞状态(D)A.等待阴塞状态下的线程被notify()唤B.等待阻塞状态下的纯种被interrput()中断C.等待时间到D.等待阻塞状态下的线程调用wait()方法3.下列哪个方法可以使...

weixin_42292348的博客 4163

java中线程控制方法_如何控制Java中的线程,总结了3种方法...

private int state = 1;private int n = 1;private ReentrantLock lock=newReentrantLock();private Condition condition1=lock.newCondition();private Condition condition2=lock.newCondition();private Condit...

weixin_36161279的博客 146

java中线程控制方法的说法正确的是_Java多线程基础(二)

基本概念进程:程序的执行过程。持有资源(共享内存、共享文件)和线程。线程:- 是一个程序内部的顺序控制流。- 它包含在进程之中,是系统中最小执行单元,同一个进程可以有多个线程。- 线程共享进程的资源。线程和进程对比:- 每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。- 线程:轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。...

weixin_39552037的博客 2289

Java中线程知识--线程的控制(二)

这篇来谈谈线程的睡眠、让步以及优先级 线程睡眠 sleep() 当前线程在指定时间内暂停运行,在此期间内线程进入阻塞状态,不会获得执行的机会. 线程优先级 一个新建线程的默认优先级与主线程一致,均为普通优先级,线程Thread中的 setPriority(int Priority)方法设置当前线程的优先级高低,其 Priority 的范围在 1-10之间 Thread提供了三个静态常量 M...

weixin_44363770的博客 159

Java:谈谈控制线程的几种办法

推荐阅读:阿里二面凉经:虚拟机+MySQL+中间件+设计模式+缓存+Spring+并发等难题,全部迎刃而解 控制线程的办法诸多,本篇做出一部分整理总结。 join() 官方解释简洁明了:Waits for this thread to die.,很明显,针对线程来说,谁调用,等谁死。举个例子:当在A线程中调用B线程的join()方法时,A线程将会被阻塞,直到B线程执行完毕消亡...

资料免费分享,点击名片 156

java中线程控制方法的说法正确的是_在java程序中,下列关于线程的说法错误的时()...

银行会计记账方法按其登记经济业务方式不同,可选择()A.借贷复式记账法B.资金收付复式细集料泥块含量试验试样置于容器中后,注入洁净的水,水面至少超过砂面约()A.100mmB.150mmC.200隔离开关()。A.设有消弧装置B.没有消弧装置经过改革开放30年的长足发展,我国城市化的进程明显加快,城市化的标准是()。A.劳动力从第一产下列吊顶中吸音效果最好的是()。A.轻钢龙骨石膏吊顶B.塑料扣板...

weixin_42462474的博客 435
上一篇: 线程问题-一个线程怎么调用另一个线程的结果(2)
下一篇: java中线程状态-死亡
aixirang3421
博客等级 码龄11年 0粉丝 0原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符  | 博主筛选后可见
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值