(一)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线程也会被唤醒。 |