最大的不同是在等待时wait会释放锁,而sleep一直持有锁。Wait通常被用于线程间交互,sleep通常被用于暂停执行。
在Java中线程的状态一共被分成6种:
初始态:
创建一个Thread对象,但还未调用start()启动线程时,线程处于初始态。
运行态:在Java中,运行态包括就绪态和运行态。
就绪态:该状态下的线程已经获得执行所需的所有资源,只要CPU分配执行权就能运行。所有就绪态的线程存放在就绪队列中。
运行态:获得CPU执行权,正在执行的线程。由于一个CPU同一时刻只能执行一条线程,因此每个CPU每个时刻只有一条运行态的线程。
阻塞态: