Java多线程学习——用抛出异常的方法结束线程。

java多线程学习总结 1.进程与线程的区别 线程是程序执行的最小单位,而进程是操作系统分配资源的最小单位; 一个进程由一个或多个线程组成,线程是一个进程中代码的不同执行路线 进程之间相互独立,但同一进程下的各个线程之间共享程序的内存空间(包括代码段,数据集,堆等)及一些进程级的资源(如打开文件和信 号等),某进程内的线程在其他进程不可见; 调度和切换:线程上下文切换比进程上下文切换要快得多 2.创建线程的三种方法: 1.创建线程方式一:继承Thread类,重写run方法,调用start开启线程 publ 阅读详情

        昨天开始看《Java多线程编程核心技术》一书。记录一些所学:

1.通过查看“Windows资源管理器”中的列表,完全可以将运行在内存中的.exe文件理解成一个线程,线程是受操作系统管理的基本运行单元。

2.非线程安全:指多个线程对同一个对象中的同一个实例变量进行访问时会出现值被修改不同步的情况,进而影响程序的执行流程。

3.Thread.currentThread().interrupt()   用来停止一个线程,Thread.interrupted() Thred.isInterrupt() 查看线程是否停止。

                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                                           

package shi;

class MyThread extends Thread {

	@Override
	public void run() {
		try {
			for(int i = 0;i<50;i++) {
				if (Thread.interrupted()) {
					System.out.println("已经是停止状态!我要退出了");
					throw new InterruptedException();
				}
				System.out.println(i);
			}
			System.out.println("我在for循环下面!");
		}catch (InterruptedException e) {
			System.out.println("进入MyThread类run方法中的catch了!");
			e.printStackTrace();
		}
	}
	
}
public class Run {

	public static void main(String[] args) {
		MyThread thread = new MyThread();
		try {
			thread.start();
			Thread.sleep(2000);
			Thread.currentThread().interrupt();
		} catch (InterruptedException e) {
			// TODO Auto-generated catch block
			e.printStackTrace();
		}
		System.out.println("end!");
		
	}

}


智能车图像处理去畸变+逆透视教程 图像处理,去畸变与逆透视整合 阅读详情

相关推荐

【硬件开发】振铃

如果是开关管的振铃,那么桥臂的SW处产生的振铃会窜入驱动电路,造成的结果就是驱动电路和上桥臂下桥臂之间的SW节点都会有振铃现象。如果是驱动电路的振铃,那么MCU的输出引脚还是正常的PWM,但是到了MOS管两侧就变成带有振铃的PWM波形了。开关振铃产生的原因是MOS管上面的寄生电感当开关管打开时为了保持电流不变感应出的电压会对电源和地产生冲击。开关管的驱动线上的寄生电容和寄生电感导致的振铃为驱动电路振铃。开关管上的寄生电容和寄生电感导致的振铃为开关节点振铃。、电感等元件的存在,导致电路中的电压和。

weixin_62546664的博客 1828

Java8 CompletableFuture(4)异常处理 whenComplete

一、whenComplete的作用 当CompletableFuture的任务不论是正常完成还是出现异常它都会调用whenComplete这回调函数。 正常完成:whenComplete返回结果和上级任务一致,异常为null; 出现异常:whenComplete返回结果为null,异常为上级任务的异常; 即调用get()时,正常完成时就获取到结果,出现异常时就会抛出异常,需要你处理该异常。 二、测试案例 1. 只用whenComplete public class Thread02_WhenComple

Java Spring Elasticsearch 2万+

安装升级最新版本postman时遇到“无法定位程序输入点 SetDefaultDllDirectories于动态链接库KERNEL32.dll 上.”的问题

软件版本迭代更新真快,最近升级最新Postman版本时出现以下问题 我就简单纪录下解决办法: 备注:我用的是最新的postman工具包:Postman-win64-7.25.0-Setup.exe,目前是最新 0. 前提是已经到postman官网https://www.postman.com/downloads/下载好软件工具包 1.安装window7系统更新补丁KB2533623,请到微软公司官网https://support.microsoft.com/en-us/help/2...

董广明的博客 1万+

Java一个线程结束另一个线程,Java如何停止一个线程?

Java一个线程结束另一个线程,Java如何停止一个线程? 对线程A执行interrupt()方法后,线程A内部的sleep方法会抛出InterruptedException异常,我们可以根据这个信号,结束线程A。 对线程A执行interrupt()方法后,线程A的Thread.currentThread().isInterrupted()结果为true,我们可以根据这个信号,结束线程A。

u014644574的博客 706

Adams软件安装与配置全攻略:从入门到机器人仿真

机械系统动力学仿真软件Adams是工业机器人开发的重要工具,其安装过程涉及许可证配置、环境变量设置等关键技术环节。专业仿真软件安装通常需要处理系统兼容性、组件依赖和授权验证等工程问题,特别是在机器人控制仿真等场景中,还需集成MATLAB/Simulink等第三方工具。本文以Windows平台为例,详解Adams安装的核心步骤,包括系统环境检查、许可证服务器配置、工业机器人专项模块安装等实践要点,并针对NVIDIA Quadro显卡优化、27500端口通信等常见问题提供解决方案,帮助用户快速搭建可靠的仿真环境

weixin_28523493的博客 199

计量经济学tempdisagg的python库:年度时序变月度

计量经济学tempdisagg的python库:年度时序变月度

素质云笔记 1528

Java多线程技能(六)——停止线程(异常法)

能停止的线程——异常法   在线程中用for循环语句来判断一下线程是否是停止状态,如果是停止状态,则后面的代码不再运行即可。   有些程序虽然停止了线程,但是如果for语句下面还有语句,依旧会继续运行的。例如以下例子:创建测试项目forprint,类MyThread.java代码如下: public class MyThread extends Thread { @Override public void run() { super.run(); for (i

qq_44307209的博客 1168

粒子群算法Particle Swarm Optimization超详细解析+代码实例讲解

粒子群算法,也称粒子群优化算法或鸟群觅食算法(Particle Swarm Optimization),缩写为 PSO, 是近年来由J. Kennedy和R. C. Eberhart等开发的一种新的进化算法(Evolutionary Algorithm - EA)。

猫敷雪 893

Java中终止(销毁)线程的方法

结束线程有以下三种方法: (1)设置退出标志,使线程正常退出,也就是当run()方法完成后线程终止 (2)使用interrupt()方法中断线程 (3)使用stop方法强行终止线程(不推荐使用,Thread.stop, Thread.suspend, Thread.resume 和 Runtime.runFinalizersOnExit 这些终止线程运行的方法已经被废弃,使用它们是极端不安全的!) stop()方法太过于暴力,会强行把执行一半的线程终止。这样会就不会保证线程的资源正...

BAIFOL的博客 6350

22h2版本的win10安装Docker Desktop时页面空白

摘要:Windows10 22H2系统重装Docker时出现安装界面卡死问题,通过管理员CMD执行静默安装命令解决。命令指定了WSL-2后端及多个自定义数据存储路径(安装目录、Hyper-V数据、Windows容器数据、WSL数据),安装需等待几分钟。最终验证安装成功。

猿小白的博客 658

标准测试测试数据STDF学习笔记

本文介绍了STDF(Standard Test Data Format)文件的结构与解析方法。首先详细说明了STDF记录的组成,包括记录头类型(REC_TYP和REC_SUB)、数据类型定义、时间日期格式以及无效数据标识。重点分析了25种主要记录类型的功能、数据内容和出现位置,如FAR、MIR、MRR等关键记录。然后介绍了基于pystdf开源工具的解析方法,包括自带脚本的使用和自编程解析流程,通过事件驱动机制处理数据流。特别指出测试数据是按照PIR→PTR/MPR/FTR→PRR的循环模式组织。文章为ATE

歌颂苦难的行为是无耻的; 1513

Java基础:异常的抛出,多线程

学习笔记,资料来源:廖雪峰的官方网站 一、异常的抛出 1、定义 : 一个方法不处理这个异常,而是调用层次向上传递,谁调用这个方法,这个异常就由谁来处理。 2、throw : 将产生的异常抛出(强调的是动作),抛出的既可以是异常的引用,也可以是异常对象。(位置: 方法体内) 3、throws : 如果一个方法可能会出现异常,但没有能力处理这种异常,可以在方法声明处用throws子句来声明抛出异常。用它修饰的方法向调用者表明该方法可能会抛出异常(可以是一种类型,也可以是多种类型,用逗号隔开)(位置: 写在方法名

Anakin6174的博客 1764

[cshell]个性化配置你的cshrc/tcshrc

本文介绍了csh/tcsh shell的配置优化方法,主要包括:1. 配置文件管理(全局和个人配置);2. 按键绑定设置(解决远程登录按键问题);3. 提示符个性化(包含颜色配置方案);4. 环境变量设置(如LSCOLORS、CLICOLOR等);5. 安全防护措施(防误删、防覆盖等);6. 实用alias命令集(简化操作、提高效率)。文章提供了详细的配置示例,并建议通过man tcsh获取更多帮助信息。这些配置能显著提升shell使用体验和工作效率。

元直的博客 6113

Java多线程任务超时结束的5种实现方法

在用Java编写并发程序时,往往会碰到某个线程因计算量大或因阻塞而一直处于无响应的情况,我们可能会等的不耐烦(也可能是不想让它占用太多资源)想及时终止掉它,那就需要用到任务超时结束的技巧了。在刚接触到多线程时,我本以为API会提供这样一个多线程类:Thread(Runnable r, long timeout) ,第二个参数用来设置超时时间,可事实并非如此。因为这样的类不具有通用性,面向对象设计语言

wonking666的博客 3万+

NTscan扫描工具

ntscan是一个扫描器,可以扫描没有密码和弱密码的共享,先到配置文件中填写猜测的用户名和密码,扫描过程中右侧出现的是扫描日志。

Probability and Statistics - 4th edition

Probability and Statistics - 4th edition

多线程中子线程抛出异常后,如何表现

进程与多线程 多线程中一个线程抛出异常(不捕获);主线程及其他子线程如何表现 结论: 语言 主线程 子线程 C++ 挂死 挂死 Java 继续运行 继续运行 C++ code #include &amp;amp;lt;iostream&amp;amp;gt; #include &amp;amp;lt;thread&amp;amp;gt; #include &amp;amp;lt;chrono&amp;amp;gt; void thre

Sunrise的专栏 9350

华为的C语言编程规范.pdf

华为技术有限公司内部技术规范。本规范制定了编写C语言程序的基本原则、规则和建议。从代码的清晰、简洁、可测试、安全、程序效率、可移植各个方面对C语言编程作出了具体指导。

Java多线程wait()和notify()方法图解

多线程场景下 wait 和notify 方法详解,注意事项,内部阻塞队列和等待队列的过程,wait和sleep方法的区别

VIBE的博客 4249

计算机控制技术及应用

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

【java基础】多线程(超详细)

在本文中,介绍了java线程的基本知识,包括线程的创建与启动、线程的生命周期等内容

weixin_44571502的博客 1883

java多线程中的异常处理

首先,我们要知道,在Java中,线程中的异常是不能抛出到调用该线程的外部方法中捕获的。 为什么不能抛出到外部线程捕获? 因为线程是独立执行的代码片断,线程的问题应该由线程自己来解决,而不要委托到外部。”基于这样的设计理念,在Java中,线程方法的异常都应该在线程代码边界之内(run方法内)进行try catch并处理掉。换句话说,我们不能捕获从线程中逃逸的异常。 怎么进行的限制? 通过java...

进化的深山猿 3511

Java多线程编程中的异常处理策略

在Java中,异常处理通常涉及到这个结构。这在单线程程序中已经很常见了,但在多线程环境下,使用它就需要更多的考量。比如,咱们要考虑异常是否应该在当前线程内部处理,还是需要传递给其他线程或者主线程来处理。除了基本的异常捕获机制,多线程环境中还有一个重要的概念:线程间的异常传递。在多线程程序中,一个线程抛出的异常通常不会影响其他线程。但有时候,咱们可能需要将一个线程的异常通知给其他线程,或者需要主线程知道子线程的异常情况。这就涉及到了线程间的通信和协调。那么,怎么做到这一点呢?小黑这就给大家展示一下。

宋小黑的博客 1797

【Java多线程】wait方法和notify方法

介绍wait方法和notify方法

chaodddddd的博客 1427

Java线程异常处理与多线程编程实践

Java线程未捕获异常处理通过Thread.UncaughtExceptionHandler接口实现,该接口定义了uncaughtException()方法用于处理线程抛出的异常。异常处理器可分为全局默认处理器和线程专属处理器两种绑定方式,JVM按特定优先级顺序处理未捕获异常。此外,Java线程分为守护线程和用户线程两类,守护线程的生命周期依赖于用户线程,当JVM仅剩守护线程时会直接终止程序。多线程环境下共享资源的访问需要通过同步机制(如synchronized)来解决竞态条件问题,确保数据一致性。 (字数

静水深流 1136

java线程异常_java线程异常处理方法

工作中常发现有些程序发生异常但却没有错误日志,原因就是一些开发线程异常处理错误,导致程序报错但异常信息打印到堆栈上,不好在生产环境中定位问题。在java多线程程序中,所有线程都不允许抛出未捕获的checked exception(比如sleep时的InterruptedException),也就是说各个线程需要自己把自己的checked exception处理掉。这一点是通过java.lang.R...

weixin_42360733的博客 1943

全面整理Java多线程

无论如何,一个线程的中断状态有有可能被其它线程调用中断来改变。当线程池中有任务需要执行时,线程池会判断如果线程数量没有超过核心数量就会新建线程池进行任务执行,如果线程池中的线程数量已经超过核心线程数,这时候任务就会被放入任务队列中排队等待执行;线程池中的核心线程数,默认情况下核心线程一直存活在线程池中,如果将 ThreadPoolExecutor 的 allowCoreThreadTimeOut 属性设为 true,如果线程池一直闲置并超过了 keepAliveTime 所指定的时间,核心线程就会被终止。

good___lucky的博客 2074

多线程的终止方法(停止线程)

多线程的终止方法 多线程的终止共有3种方法 run方法执行结束,正常退出 异常终止 暴力终止 停止线程 停止线程是多线程中的一个重要技术点,本篇文章将对线程的停止操作进行详细讲解。 停止线程不能像for或while循环中使用break停止那样直接,而是需要一些技巧来终止。 如何判断线程已终止 Thread类中提供了两个方法: interrupted():测试当前线程是否已中断。(静态方法)...

citricl 5278

java 线程异常后结束线程池_求解,多线程时,线程池中一个线程内部代码抛出异常,那么这个线程能正常结束么?...

首先建立线程池ExecutorService pool = Executors.newFixedThreadPool(1000);pool.submit(new HandlerSocket(client));然后,实现多线程,当一个线程出现异常时:如下pool-1-thread-1javax.crypto.IllegalBlockSizeException: Input length must b...

weixin_39854867的博客 650
上一篇: Python 实现哥德巴赫猜想
下一篇: 几道python练习题
bingoCoder
博客等级 码龄10年 1400粉丝 157原创
评论
成就一亿技术人!
拼手气红包6.0元
还能输入1000个字符
 
 条评论被折叠 查看
添加红包

请填写红包祝福语或标题

个

红包个数最小为10个

元

红包金额最低5元

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

抵扣说明:

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

余额充值