(一)Object类相关api(相关的方法一定是当前线程在获取了对应的锁对象才能调用,否则会抛出异常)
方法 | 功能 |
Object.wait() | 锁对象调用该方法使当前线程进入等待状态,并立刻释放锁对象,直到被其他线程唤醒进入等锁池。 |
Object.wait(long) | 锁对象调用该方法使当前线程进入等待状态,并立刻释放锁对象,直到被其他线程唤醒进入等锁池。 |
Object.wait(long,int) | 和o.wait(long)方法一样,如果int参数大于0则前面的long数字加1 |
Object | 随机唤醒一个处于等待中的线程(同一个等待阻塞池中) |
Object.notifyAll() | 随机唤醒一个处于等待中的线程(同一个等待阻塞池中) |
(二)Thread类的相关api
方法 | 功能 | 备注 |
Thread.currentThread() | 返回对当前线程对象的引用 | 同一段代码对Thread.currentThread()的调用,其返回值可能随着对应着不同的线程(对象) |
Thread.sleep(long millis) | 使当前线程睡眠 | 不会释放锁对象,使其他线程有执行的机会 |
Thread.yield() | 使当前线程主动放弃cpu的执行权 | 有可能立刻又被重新选中继续执行,只可能给优先级更高的线程机会 |
t.getId() | 返回该线程的id |
|
t.getName() | 返回该线程的名字 |
|
t.getPriority() | 返回该线程的优先级 |
|
t.getState() | 返回该线程的状态 |
|
t.getThreadGroup() | 返回该线程所属的线程组 |
|
t.interrupt() | 将该线程中断,如果线程正处在sleep()、join()、wait()方法中时 (也就是正在阻塞中)调用该方法,该方法会抛出异常。 | 实际并不会中断,只是将中断标志设置为true |
t.interrupted() | 检测当前线程是否已经中断 | 调用该方法后就将该线程的中断标志位设置位false,所以连续两次调用该方法第二次肯定时false |
t.isInterrupted() | 检测该线程是否已经中断 | 对中断标志位不作处理 |
t.isAlive() | 检测该线程是否还活着 |
|
t.isDaemon() | 检测该线程是否为守护线程 |
|
t.join() | 等待相应的线程执行完毕 | 在a线程中调用b.join(),则a线程阻塞,直到b线程执行完 |
t.join(long millis) | 等待相应的线程执行完毕 | 和上面的方法一样,不过a线程阻塞的时间根据long的大小有关,如果达到设定的阻塞时间,就算b线程没有执行完,a线程也会被唤醒。 |