线程类Thread中的方法是什么
发表于:2025-02-04 作者:千家信息网编辑
千家信息网最后更新 2025年02月04日,本篇文章给大家分享的是有关线程类Thread中的方法是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1)currentThread(
千家信息网最后更新 2025年02月04日线程类Thread中的方法是什么
本篇文章给大家分享的是有关线程类Thread中的方法是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。
1)currentThread(): public static Thread currentThread() 说明:返回当前正在执行的线程对象的引用,即返回调用当前代码的线程对象。
2) join(): public final void join(long millis) throws InterruptedException 参数:等待的时间,可选,不填则默认为0。 说明: 1>强制运行调用join方法的线程,在该线程启动后的millis毫秒内,其它线程无法运行。 2>如果millis的值为0,则表示在该线程运行期间,其它线程无法运行,必须等到该线程结束后其它线程才可以运行。 3>join(long)方法是在内部调用wait(long)方法来实现的等待效果。 3)setDaemon(): public final void setDaemon(boolean on) 说明:将该线程标记为后台线程,该方法必须在启动线程(start()方法)前调用,否则报IllegalThreadStateException异常。 补充: 后台线程:处于后台运行,任务是为其他线程提供服务。也称为"守护线程"或"精灵线程"。JVM的垃圾回收就是典型的后台线程。 特点: 1>若所有的前台线程都死亡,后台线程自动死亡。 2>前台线程创建的线程默认是前台线程。 isDaemon(): public final boolean isDaemon() 说明:判断是否为后台线程: 4)sleep(): public static void sleep(long millis) throws InterruptedException 说明:让当前正在执行的线程休眠(暂停)指定的毫秒数,进入阻塞状态 比较:Thread.sleep()与Object.wait()二者都可以暂停当前线程,释放CPU控制权,主要的区别在于Object.wait()在释放CPU同时,释放了持有的对象锁。 5)yield(): public static void yield() 说明:暂停当前正在执行的线程对象,并执行其他线程,即线程礼让。 注意:暂停当前线程,但不会阻塞该线程,而是让其进入就绪状态。故完全有可能:某个线程调用了yield()之后,线程调度器又把他调度出来重新执行。 6)interrupt(): 说明: 1)每个线程都有一个boolean类型的中断标志,当一个线程调用interrupt()方法时,线程的中断标志将被设为true,此时线程处于中断状态。 2)调用线程的interrupt()方法只是将线程的中断标记设为了true,并不会中断一个正在运行的线程。 3)如果在程序中没有去检测线程的中断标志,那么即使将线程的中断标志设为true,线程也一样照常运行。 应用: 1)当线程调用Thread.sleep()、Thread.join()、object.wait()等方法,都会使当前线程进入到阻塞状态。 2)如果此时(线程处于阻塞状态)调用interrupt()方法将线程中断,则处于阻塞状态的线程会抛出一个异常,并且将线程的中断状态清除掉,这样就可以让线程退出阻塞状态了。 3)Thread.sleep()、Thread.join()、object.wait()等方法的实现中,都包含了对线程中断标识的检测:如果发现中断标志为true则抛出异常并且将中断标志位设置为false。 isInterrupted(): public boolean isInterrupted() 说明:测试线程是否已经中断,不清除线程的中断状态。 eg:thread.isInterrupted(); 判断thread指向的线程对象是否为中断状态。 interrupted(): public static boolean interrupted() 说明:测试当前线程是否已经中断,并,即将线程的中断标识设为false。 eg:thread.interrupted(); 判断调用thread.interrupted();语句的线程(即当前线程)是否为中断状态。 7)stop(): [@Deprecated](https://my.oschina.net/jianhuaw) public final void stop() 说明:终止线程,马上让线程停止运行,并释放该线程所持有的锁!导致数据得不到同步的处理,可能出现数据不一致的问题。 补充:其它停止线程的方法; 1>手动抛出异常来停止线程(推荐): 优点:在catch块中可以将捕获的异常向上抛出,使得线程停止的事件可以向上传播。 2>使用return停止线程: 使用interrupt()方法与return结合起来,实现停止线程的功能。 eg:在run方法中:if (this.isInterrupt()) {return;} 8)suspend(): [@Deprecated](https://my.oschina.net/jianhuaw) public final void suspend() 说明: 1>挂起线程,使线程进入"阻塞"状态,在调用resume()方法前该线程一直处于阻塞状态。 2>独占公共的同步对象,使得其它线程无法访问公共的同步对象。 3>该方法容易发生死锁:调用suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁。如果其它线程想通过resume()方法来恢复目标线程,同时必须使用目标线程锁定的资源,就会造成死锁。 举例:当一个线程的run()方法中的程序执行并进入到一个synchronized方法的内部时,如果此时该线程调用suspend()方法被挂起了,那么直到调用resume()方法被唤醒之前,这个synchronized方法将一直处于"暂停"状态,并且"锁未被释放",其它线程就不能调用这个方法了。 9)resume(): [@Deprecated](https://my.oschina.net/jianhuaw) public final void resume() 说明:恢复线程,恢复被suspend方法挂起的线程 注意:suspend()与resume()容易导致死锁,故应该使用锁对象调用wait()和notify()的机制来代替suspend()和resume()来控制线程。10)getName()/setName(): 说明:获取/设置线程的名称 注意:第一个子线程默认的名字:Thread-0
以上就是线程类Thread中的方法是什么,小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注行业资讯频道。
线程
方法
状态
运行
对象
阻塞
后台
标志
正在
前台
目标
死锁
同步
同时
就是
数据
更多
标记
标识
知识
数据库的安全要保护哪些东西
数据库安全各自的含义是什么
生产安全数据库录入
数据库的安全性及管理
数据库安全策略包含哪些
海淀数据库安全审计系统
建立农村房屋安全信息数据库
易用的数据库客户端支持安全管理
连接数据库失败ssl安全错误
数据库的锁怎样保障安全
自己开个游戏服务器
ntp服务器连接异常
链路层的网络安全威胁
数据库 蛋白相互作用
即时通讯聊天软件开发费用
数据库ogg同步用户
软件开发估算工具表
上海影双网络技术有限公司
绿萌软件开发
网络安全定义
apq软件开发
数据库提示快捷键
请求失败网络异常或服务器
软件开发方法学生选课系统
系统可以用数据库做吗
mysql备份多个数据库
关闭软件时会不会关闭数据库连接
数据库审计市场分析
时辰网络技术服务有限公司
musql服务器的默认端口号
数据库密码常用加密方式
小学生网络安全ppt课件卡通
网络安全问答题库及答案
海南鲲鹏服务器供应公司
商场大屏触摸软件开发公司
tcp服务器多播
软件开发记录明细项目
数据库插入信息到学生表
十八大网络安全检查汇报
信息网络安全指导方针