java多线程编程概述_Java多线程编程核心技术(高洪岩)——阅读笔记

本文介绍了Java多线程编程的基本概念,包括通过继承Thread类和实现Runnable接口创建线程,强调了start()方法启动线程的顺序特点。详细解析了线程的生命周期状态,如isAlive()方法的使用。此外,讨论了线程的休眠、停止策略,特别指出Thread.stop()的不安全性,推荐使用interrupt()配合异常处理来优雅地停止线程。
摘要由CSDN通过智能技术生成

第一章 Java多线程技能

实现多线程的方式:

继承Thread类

实现Runnable接口

执行start()方法的顺序不代表线程启动的顺序

构造函数Thread(Runnable target)不光可以传入Runnable接口的对象,还可以传入一个Thread类的对象

,这样做完全可以将一个Threa对象中的run()方法交由其他线程进行调用

在某些JVM中,i--的操作要分成如下3步:

取得原有i值

计算i-1

对i进行赋值

currentThread():返回代码段正在被那个线程调用的信息

currentThread()和 this的差异

Thread.currentThread().getName()在两种实现线程的方式中都可以用

this.getName()只能在继承方式中使用。因为在Thread子类中用this,this代表的是线程对象。

如果你在Runnable实现类中用this.getName(),那么编译错误,因为在Runnable中,不存在getName方法

使用Thread.currentThread().getName()和使用this.getName(),都可以得到线程的名称,但是使用this调用getName()方法只能在本类中,而不能在其他类中,更不能在Runnable接口中,所以只能使用Thread.currentThread().getName()获取线程的名称,否则会出现编译时异常。

isAlive():判断当前线程是否处于活动状态(线程已经启动且尚未终止:正在运行或准备运行状态)

sellp():在指定的好秒内让当前“正在执行的线程(this.currentThread())”休眠(暂停执行)

停止线程

Thread.interrupt():不会终止一个正在运行的现场,还需要加入一个判断才可以完成线程的停止

仅仅实在当前线程打了一个停止的标志

Thread.stop():不安全,弃用的方法

停止线程的方法:

退出标志:return

stop()方法

interrupt()方法

异常法

sleep+interrupt():如果在sleep状态下停止某一线程,会进入catch语句,并且清除停止状态值使之变成false;如果先interrupt()再sleep会抛出sleep interrupted异常

暴力停止stop:stop()方法会抛出ThreadDeath异常(此异常不需要显示的捕捉),如果强制让线程停止则有可能使一些请理性的工具得不到完成,另外一种情况就对所以的对象进行了“解锁”,导致数据得不到同步的处理,出现数据不一致的问题。

this.interrupted()静态方法:测试当前线程(运行此方法线程,就是此段代码运行的线程,不是指调用对象的线程)是否已经中断,线程中断状态由该方法清除(置为false)

this.isInterrupter():测试线程Thread对象是否已经中断

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值