1、典型回答
线程常用方法有以下这些:
- start():启动线程,并调用线程的 run() 方法来执行任务。
- run():线程的实际工作方法 (普通方法),定义线程要执行的任务。
- sleep(long millis):暂停当前线程的执行,让线程进入阻塞状态,并释放 CPU 资源给其他线程使用,单位是毫秒。
- join():将当前线程挂起,等待其他线程执行完毕后再继续执行。
- interrupt():线程中断方法,而是给线程发送中断信号,可以配合 isInterrupted() 方法或Thread.interrupted() 方法来检查是否中断
- isInterrupted():检查当前线程是否被中断。
- getState():获取当前线程的状态。
- setPriority(int priority):设置线程的优先级,范围是 1 (最低) 至 10 (最高) 默认创建的线程优先级是5。
- getPriority():获取线程的优先级。
- setDaemon(boolean on):将线程设置为守护线程 (true) 或用户线程 (false)。
- yield():暗示当前线程让出一次 CPU 资源,让其他线程有机会执行。
2、全面剖析
线程常用方法有线程启动方法 stat()、线程休眠方法 sleep(long milis)、线程中断方法 interrupr()、线程优先级设置方法 setPriority(int priority)、yield() 尝试让出 CPU 资源等,但在这些方法中,需要注意以下事项:
- 线程优先级的设置方法设置了并不一定会有效,例如设置了线程 A 的优先级为 10,而线程 B 的优先级为5这里的线程 A 并不一定比线程 B 先执行,而是优先级高的线程大概率会优先执行,所以这一点需要注意。
- 调用了 yield() 方法之后,不是说当前线程一定会不执行了。而是会让出一次 CPU 执行权,让所有线程一起再次争抢 CPU 资源,而当前线程也拥有争抢的权利,所以它有可能得到 CPU 执行权,继续执行。与之相类似的方法还有 Thread.sleep(0),它的作用和 yield() 方法类似,即使休眠时间是 0,此方法也是有意义的,它会让所有线程再次争抢 CPU 的执行权。
3、知识扩展
start 方法和 run 方法有什么区别?-CSDN博客