Java并发基础(二)线程状态和基本操作

线程的状态和生命周期示意图

线程状态.jpg
线程生命周期.png

Java 中Thread的各种方法介绍

1. yield()

Thread的static方法,让出当前CPU的给其他优先级一样或者更高的线程(也可以是自己)。
使用场景:当前线程需要其他线程先执行结束才能继续执行,可以先放弃当前线程。

2. join()

join实现.png

3. sleep()wait()

  • sleep()方法是Thread的静态方法,而wait是Object实例方法
  • wait()方法必须要在同步方法或者同步块中调用,也就是必须已经获得对象锁。而sleep()方法没有这个限制可以在任何地方使用。另外,wait()方法会释放占有的对象锁,使得该线程进入等待池中,等待下一次获取资源。而sleep()方法只是会让出CPU并不会释放掉对象锁;
  • sleep()方法在休眠时间达到后,如果再次获得CPU时间片就会继续执行,而wait()方法必须等待Object.notift/Object.notifyAll通知后,才会离开等待池,并且再次获得CPU时间片才会继续执行。

4. interrupt()

方法名 详细解释 注释
public void interrupt() 中断该线程对象 如果该线程被调用了Object wait/Object wait(long),或者被调用sleep(long),join()/join(long)方法时会抛出interruptedException并且中断标志位将会被清除
public boolean isinterrupted() 测试该线程对象是否被中断 中断标志位不会被清除
public static boolean interrupted() 测试当前线程是否被中断 中断标志位会被清除

LockSupport类介绍

线程休眠的三种方法.png

你可能感兴趣的:(Java并发基础(二)线程状态和基本操作)