线程类Thread中的方法是什么

73次阅读
没有评论

共计 2699 个字符,预计需要花费 7 分钟才能阅读完成。

本篇文章给大家分享的是有关线程类 Thread 中的方法是什么,丸趣 TV 小编觉得挺实用的,因此分享给大家学习,希望大家阅读完这篇文章后可以有所收获,话不多说,跟着丸趣 TV 小编一起来看看吧。

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)方法来实现的等待效果。
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 同时,释放了持有的对象锁。
public static void yield() 说明:暂停当前正在执行的线程对象,并执行其他线程,即线程礼让。注意:暂停当前线程,但不会阻塞该线程,而是让其进入就绪状态。故完全有可能:某个线程调用了 yield()之后,线程调度器又把他调度出来重新执行。
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(); 语句的线程 (即当前线程) 是否为中断状态。
[@Deprecated](https://my.oschina.net/jianhuaw) public final void stop() 说明:终止线程,马上让线程停止运行, 并释放该线程所持有的锁!导致数据得不到同步的处理,可能出现数据不一致的问题。补充:其它停止线程的方法;1 手动抛出异常来停止线程(推荐):优点:在 catch 块中可以将捕获的异常向上抛出,使得线程停止的事件可以向上传播。2 使用 return 停止线程:使用 interrupt()方法与 return 结合起来,实现停止线程的功能。eg:在 run 方法中:if (this.isInterrupt()) {return;}
[@Deprecated](https://my.oschina.net/jianhuaw) public final void suspend() 1 挂起线程,使线程进入“阻塞”状态,在调用 resume()方法前该线程一直处于阻塞状态。2 独占公共的同步对象,使得其它线程无法访问公共的同步对象。3 该方法容易发生死锁:调用 suspend()的时候,目标线程会停下来,但却仍然持有在这之前获得的锁。如果其它线程想通过 resume()方法来恢复目标线程,同时必须使用目标线程锁定的资源,就会造成死锁。举例:当一个线程的 run()方法中的程序执行并进入到一个 synchronized 方法的内部时,如果此时该线程调用 suspend()方法被挂起了,那么直到调用 resume()方法被唤醒之前,这个 synchronized 方法将一直处于“暂停”状态,并且“锁未被释放”,其它线程就不能调用这个方法了。
[@Deprecated](https://my.oschina.net/jianhuaw) public final void resume() 说明:恢复线程,恢复被 suspend 方法挂起的线程 注意:suspend()与 resume()容易导致死锁,故应该使用锁对象调用 wait()和 notify()的机制来代替 suspend()和 resume()来控制线程。
说明:获取 / 设置线程的名称 注意:第一个子线程默认的名字:Thread-0

以上就是线程类 Thread 中的方法是什么,丸趣 TV 小编相信有部分知识点可能是我们日常工作会见到或用到的。希望你能通过这篇文章学到更多知识。更多详情敬请关注丸趣 TV 行业资讯频道。

正文完
 
丸趣
版权声明:本站原创文章,由 丸趣 2023-08-16发表,共计2699字。
转载说明:除特殊说明外本站除技术相关以外文章皆由网络搜集发布,转载请注明出处。
评论(没有评论)