在Java中,线程有以下几种状态:
1. 新建(New):线程对象被创建,但还没有调用start()方法启动线程。
2. 运行(Runnable):线程被调度并执行。
3. 阻塞(Blocked):线程被阻塞,等待某个条件的满足,例如等待输入/输出完成、等待获取锁等。
4. 等待(Waiting):线程进入等待状态,等待其他线程的通知或中断。可以通过调用wait()方法、join()方法或LockSupport.park()方法使线程进入等待状态。
5. 计时等待(Timed Waiting):线程进入计时等待状态,等待一定的时间,时间到了会自动唤醒。可以通过调用sleep()方法、wait()方法的带有超时参数的版本、join()方法的带有超时参数的版本或LockSupport.parkNanos()、LockSupport.parkUntil()方法使线程进入计时等待状态。
6. 终止(Terminated):线程执行完毕,终止运行。