线程的常见方法:
1、wait():使一个线程处于等待状态
会释放持有的对象锁,进入等待此对象的锁定池(lock blocked pool ),直到针对此对象调用notify()/notifyAll()被唤醒,释放同步锁使线程回到可运行状态(Runnable)
2、sleep():使一个线程处于睡眠(阻塞)状态。
调用此方法过程中线程不会释放对象锁。它会导致程序暂停执行指定的时间,让出cpu给其他线程,但是它仍然保持对Thread的监控状态,直到指定的时间结束后又会自动恢复可运行状态(Runnable)
3、notify():使一个等待状态的线程唤醒。
并不能确切唤醒等待状态线程,是由JVM决定且不按优先级
4、allnotify():使所有等待状态的线程唤醒。
并不是给所有线程上锁,而是让它们竞争
5、join():等待该线程结束,才能执行其他线程。
join方法的作用是阻塞线程,即等待线程结束,才继续执行
6、yield():提示线程调度器让出当前线程对CPU的使用
调用 yield 会让当前线程从 Running 进入 Runnable 就绪状态,然后调度执行其它线程