多线程学习总结——线程常用的API

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

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值