Java线程的属性总结
属性 | 说明 |
id、name | id是一个递增的整数,每创建一个线程就加一。name的默认值是Thread-后跟一个编号,name可以在Thread的构造方法中进行指定,也可以通过setName方法进行设置。 |
优先级 | getPriority() 在Java中,优先级从1到10,默认为5。这个优先级会被映射到操作系统中线程的优先级,不过,因为操作系统各不相同,不一定都是10个优先级,Java中不同的优先级可能会被映射到操作系统中相同的优先级。另外,优先级对操作系统而言主要是一种建议和提示,而非强制。简单地说,在编程中,不要过于依赖优先级。 |
状态 | getState() isAlive()返回线程是否活着,线程被启动后,run方法运行结束前,返回值都是true。 |
是否daemon线程 | isDaemon() 启动线程会启动一条单独的执行流,整个程序只有在所有线程都结束的时候才退出,但daemon线程是例外,当整个程序中剩下的都是daemon线程的时候,程序就会退出。 比如负责垃圾回收的线程,这个线程就是daemon线程,在main线程结束的时候,垃圾回收线程也会退出。 |
sleep方法 | sleep(long millis) 睡眠期间,该线程会让出CPU,但睡眠的时间不一定是确切的给定毫秒数,可能有一定的偏差,偏差与系统定时器和操作系统调度器的准确度和精度有关。睡眠期间,线程可以被中断,如果被中断,sleep会抛出InterruptedException。 |
yield方法 | yield() 调用该方法,是告诉操作系统的调度器:我现在不着急占用CPU,你可以先让其他线程运行。不过,这对调度器也仅仅是建议,调度器如何处理是不一定的,它可能完全忽略该调用。 |
join方法 | join() 让调用join的线程等待该线程结束。在等待线程结束的过程中,这个等待可能被中断,如果被中断,会抛出InterruptedException。 join(long millis) 另外一个变体函数,可以限定等待的最长时间,单位为毫秒,如果为0,表示无期限等待。 |
知其然知其所以然,只有掌握了底层原理,借助第一性原理,才可以在日常开发和项目中运用自如,潇洒走江湖。 专为27届毕业生准备,托起您的就业梦。 该专辑会不定时更新,建议27届同学订阅,入职后扎实的基本功可以帮您争取更好的机会和项目。
查看5道真题和解析