java线程的几种常用方法

join()

Thread对象方法,用于使当前线程和后面的代码同步,使当前线程内操作执行完成后再执行后面的指令

wait()

Thread对象方法,使当前线程进入等待状态,等待状态的线程不会去竞争资源

sleep()

Thread类方法,使当前线程休眠指定时间,注意,sleep和wait的区别在于,线程sleep的时候,依然持有锁,依然掌控着cpu资源,在sleep完成后,继续运行当前线程。wait会使线程进入等待状态,放弃对cpu资源的争夺。

start()

Thread对象方法,用于开始一个线程,使线程进入就绪状态,开始竞争资源

notify()

Thread对象方法,用于唤醒一个线程,注意,这个方法不是用来唤醒本线程,而是用来在一个线程中唤醒其它线程的,并且,唤醒的是和当前线程抢夺同一资源失败的线程。举个例子,线程A和线程B同时抢夺同一资源,线程B抢夺到了,执行完操作之后,在B中使用notify()方法唤醒线程,这时唤醒的就是A线程。如果有不止一个线程的情况下,notify()方法会随机挑选一个线程去唤醒。

notifyAll()

Thread对象方法,和notify()方法一样,都是用来唤醒和当前线程抢夺同一资源失败的线程,只不过notifyAll()方法会唤醒所有符合条件的线程,而不是像notify()方法一样随机挑选一个线程唤醒。

setPriority()

Thread对象方法,为线程设置优先级,注意这里的设置优先级并不是使得线程更容易争抢到资源,这是一个误区,具体分析请看这篇博客:https://blog.csdn.net/qq_37856300/article/details/84390879

getPriority()

Thread对象方法,获取当前线程的优先级

currentThread()

Thread类方法,通过Thread.currentThread()可以获取到当前正在运行的线程

getName()

Thread对象方法,获取线程的名字

setName()

Thread对象方法,设置线程的名字

interrupt()

Thread对象方法,用来中断一个线程

interrupted()

Thread类方法,用来检测当前线程是否中断,如果中断返回true,未中断返回false,注意,在调用这个方法之后,会清除中断状态

isInterrupted()

Thread对象方法,用来判断调用这个方法的Thread对象是否中断,并且不会清除此对象的中断状态

isAlive()

Thread对象方法,用来判断线程是否存活,如果线程调用了start()方法并且还没有消亡,那么它就是存活的,返回true,否则返回false

getState()

Thread对象方法,返回线程的状态。线程状态一共有五种或者六种,分别为:
NEW(新建)、RUNNABLE(就绪和运行)、BLOCKED(阻塞)、WAITING(无限期等待)、TIMED_WAITING(有限期等待)、TERMINATED(消亡)
之所以说是五种和六种是因为有的地方把就绪和运行态拆分开了,有的地方把有限期等待和无限期等待合并为等待态了,这些都无所谓,不过java的getState方法确确实实只会返回这六种结果,线程的六种状态的解释请看这篇博客:
https://blog.csdn.net/qq_37856300/article/details/84333963

getId()

获取线程的id,线程的id是一个long类型的数,在线程的生命周期中这个id是唯一的,而且不会更改,但是等到这个线程的生命周期结束的时候,以后的线程可能会使用和它相同的id

猜你喜欢

转载自blog.csdn.net/qq_37856300/article/details/84336464