本文主要是介绍关于thread的几点认识,希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
线程生命周期
线程api详解
线程执行
start() - 使该线程开始执行,java虚拟机调用其run方法。
run() - 如果该线程是使用独立的Runnable运行对象构造的,则调用其Runnable对象的run方法;否则该方法不执行任何操作并返回。
线程阻塞
sleep() - 让当前正在执行的线程休眠指定的时间(暂停执行)
yield() - 让出cpu的使用权,给其他的线程执行机会,让同等优先权的线程可以执行(但并不保证当前线程会被JVM再次调度,使该线程重新进入Running状态),如果没有同等优先权的线程,那么yield方法将不起作用。
线程生命周期
isAlive() - 判断当前线程是否还活着
join() - 使用该方法的线程会在此执行完毕之后再往下继续执行。眼睁睁的看着她死去,什么都不做。
线程交互
wait() - 当一个线程执行到wait()方法时,他就进入到一个和该对象相关的等待池(Waiting Pool)中,同时失去了对象的锁---暂时的,wait后还要返还对象锁。当前线程必须拥有当前对象的锁,如果当前线程不是此锁的拥有者,会抛出IllegalMonitorStateException异常,所以wait()必须在synchronized block中调用。
notify()/notifyAll() - 唤醒在当前对象等待池中等待的第一个线程/所有线程。notify()/notifyAll()也必须拥有相同对象锁,否则也会抛出IllegalMonitorStateException异常
这篇关于关于thread的几点认识的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!