线程类Thread中的方法是什么
发表于:2025-12-01 作者:千家信息网编辑
千家信息网最后更新 2025年12月01日,本篇文章给大家分享的是有关线程类Thread中的方法是什么,小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着小编一起来看看吧。1)currentThread(
千家信息网最后更新 2025年12月01日线程类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安全错误
数据库的锁怎样保障安全
学编程数据库怎么学
bt服务器
翻墙代理服务器
服务器高端形容的描述
二手 服务器 SAS 2T硬盘
南山区新一代网络技术开发商家
人民铁道网络安全
一般写入数据库怎么写代码
图片素材数据库
服务器怎么查找网页
星图软件开发
东方财富网 软件开发
刀塔霸业怎么连接不上服务器
瑞星 服务器安全软件
湖北虎跳网络技术
qq音乐代理服务器
软件怎么连接不上数据库
2003服务器管理器找不到
大美软件开发有限公司电话
贵州网络安全防线
everything怎么搜索服务器的文件
福建多功能软件开发批发价
java轮询数据库
江苏cdma时间服务器虚拟主机
服务器被黑客利用ip电话诈骗
饥荒专用服务器添加管理员
网络技术资源分享
国际服是一个服务器
北京展厅多媒体软件开发
数据库搭建公司