线程中的函数调用

81 阅读2分钟

持续创作,加速成长!这是我参与「掘金日新计划 · 6 月更文挑战」的第24天,点击查看活动详情

getId()

thread.getId()可以获得线程的唯一标识 某个编号的线程运行结束后,该编号可能被后续创建的线程使用 重启的 JVM 后,同一个线程的编号可能不一样

yield()

Thread.yield()方法的作用是放弃当前的 CPU 资源

setPriority()

thread.setPriority( num ); 设置线程的优先级

java 线程的优先级取值范围是 1 ~ 10 , 如果超出这个范围会抛出 异常 IllegalArgumentException.

在操作系统中,优先级较高的线程获得 CPU 的资源越多。线程优先级本质上是只是给线程调度器一个提示信息,以便于调度器决定先调度哪些线程. 注意不能保证优先级高的线程先运行.

Java 优先级设置不当或者滥用可能会导致某些线程永远无法得到

运行,即产生了线程饥饿. 线程的优先级并不是设置的越高越好,一般情况下使用普通的优

先级即可,即在开发时不必设置线程的优先级线程的优先级具有继承性, 在 A 线程中创建了 B 线程,则 B 线程的 优先级与 A 线程是一样的

** interrupt()**

中断线程.

注意调用 interrupt()方法仅仅是在当前线程打一个停止标志,并不是真正的停止线程

setDaemon()

Java 中的线程分为用户线程与守护线程 守护线程是为其他线程提供服务的线程,如垃圾回收器(GC)就是一 个典型的守护线程 守护线程不能单独运行, 当 JVM 中没有其他用户线程,只有守护线 程时,判断线程的中断标志,线程有 isInterrupted()方法,该方法返回线程的中断标志守护线程会自动销毁, 中断循环, run()方法体执行完毕,子线程运行完毕JVM 会退出