Java多线程学习-2 线程主要API

  1. sleep 方法
    sleep是一个静态方法,使线程进入Runnable状态指定时间。其中sleep有一个重要的特性就是不会放弃锁的所有权。
    使用TimeUnit的sleep方法替代sleep可以免去时间的换算。

  2. yield方法
    yield方法是一种启发式方法,提醒调度器线程愿意放弃CPU,如果CPU时间不紧张可以忽略这个提醒。还有主要的一点是yield不会触发InterruptException。

  3. getContextClassLoader & setContextClassLoader
    线程类加载器获取和设置方法,这里可以提示一下,线程上下文类加载器是ServiceLoader的后门。

  4. interrupt,interrupted, isInterrupted
    interrupt 打断阻塞状态下的线程,线程调用wait, sleep, join, InterruptiableChannel的io, Selector的wakeup等其他方法进入阻塞状态,打断阻塞状态也并不等于线程终止了,而只是线程收到了一个信号(InterruptException)。interrupt 其实就是将interrupt flag设置为true,当阻塞状态的线程接收到打断状态时,会自动恢复interrupt flag。
    interrupted判断线程是否被中断,同时恢复interrupt flag。
    isInterrupted判断线程是否被中断,但是不恢复interrupt flag。
    **注意:如果在线程进入阻塞之前,调用了interrupt,当线程调用阻塞方法时,会立即收到中断信号。

  5. join
    join某个线程,当前线程被BLOCKED,直到被join的线程结束之后。当传入时间之后,当前线程会被BLOCKED指定的时间之后,自动进入RUNNING状态。

你可能感兴趣的:(Java多线程学习-2 线程主要API)