sleep()方法
为java的原生方法,执行sleep的线程会休眠直到指定时间,然后重新排队获取cpu资源(休眠后被唤醒后重新回到就绪状态排队);在休眠期间,该线程的锁不会释放
join()方法
join()方法表示 在A线程中调用B.join()方法时,A线程进入等待;join方法内部其实是使用java本地方法wait();join()方法其实就是调用Thread方法类的带参数的join方法;wait(0)相当于wait(),无限等待,直到notify,notifyall方法唤醒该线程;
不带参数的join方法 带参数的join方法yield方法
yield方法为Thread静态原生方法,他不能指定时间,调用yield方法,会建议cpu按优先级高的线程优先执行,多部分会按优先级高的线程优先执行,但也有例外,所以只能说建议。优先级从1到10,10为最高优先级;
wait()方法和notify()、notifyAll()
该三个方法是Object类的方法,用于协助多线程下的共享资源的存取,必须在synchronized代码块里面才能起作用。wait()方法会释放所有资源和锁,让出给其他线程使用,等待notify和notifyAll唤醒。另外对于synchronized需要有个锁,该锁可以是类锁,对象锁,也就是Object的子类或对象都可以,但不能是基本类型,包括Boolean,boolean,Integer,int等类型,否则会报IllegalMonitorStateException异常
参考:
http://www.jianshu.com/p/c9f847101fae
网友评论