1、 Java线程状态
线程的五种状态:
① 新建状态(New):线程对象实例化后就进入了新建状态。
② 就绪状态(Runnable):线程对象实例化后,其他线程调用了该对象的start()方法,虚拟机便 会启动该线程,处于就绪状态的线程随时可能被调度执行。
③ 运行状态(Running):线程获得了时间片,开始执行。只能从就绪状态进入运行状态。
④ 阻塞状态(Blocked):线程因为某个原因暂停执行,并让出CPU的使用权后便进入了阻塞状态。
等待阻塞:调用运行线程的wait()方法,虚拟机会把该线程放入等待池。
同步阻塞:运行线程获取对象的同步锁时,该锁已被其他线程获得,虚拟机会把该线程放入锁 定池。
其他线程:调用运行线程的sleep()方法或join()方法,或线程发出I/O请求时,进入阻塞状态。
⑤ 结束状态(Dead):线程正常执行完或异常退出时,进入了结束状态。
2、Thread类常用基本方法
构造器:
① Thread() 分配新的 Thread 对象。
② Thread(Runnable target) 分配新的 Thread 对象。
③ Thread(Runnable target) 分配新的 Thread 对象。
方法:
① currentThread() 返回对当前正在执行的线程对象的引用。
② sleep(long millis)在指定的毫秒数内让当前正在执行的线程休眠(暂停 执行)。
③ sleep(long millis, int nanos)在指定的毫秒数加指定的纳秒数内让当前正在执行的 线程休眠(暂停执行)。
④ yield() 暂停当前正在执行的线程对象,并执行其他线程。
⑤ start()getId() 返回该线程的标识符。
⑥ 使该线程开始执行;Java 虚拟机调用该线程的 run 方 法。
⑦ getId() 返回该线程的标识符。
⑧ getName() 返回该线程的名称。
⑨ getPriority() 返回线程的优先级。
⑩ isAlive() 测试线程是否处于活动状态。
⑪ join() 等待该线程终止。
⑫ join(long millis) 等待该线程终止的时间长为 millis 毫秒。
⑬ join(long millis, int nanos)等待该线程终止的时间长为 millis 毫秒 + nanos 纳 秒
⑭ setName(String name) 改变线程名称,使之与参数 name 相同。
⑮ setPriority(int newPriority)更改线程的优先级。参数范围[1,10]