首页 诗词 字典 板报 句子 名言 友答 励志 学校 网站地图
当前位置: 首页 > 教程频道 > 开发语言 > 编程 >

java 线程的几个步骤

2012-09-04 
java 线程的几个方法Thread的方法sleep()1. sleep ()函数有一个参数,通过参数可使线程在指定的时间内进入

java 线程的几个方法
Thread的方法

sleep()
1. sleep ()函数有一个参数,通过参数可使线程在指定的时间内进入停滞状态,当指定的时间过后,线程则自动进入可执行状态。blocked线程池是进入阻塞状态的线程,跟锁没有关系。
2. 当调用sleep ()函数后,线程不会释放它的“锁标志”。

yield()
1.通过yield ()函数,可使线程进入可执行状态,排程器从可执行状态的线程中重新进行排程。所以调用了yield()的函数也有可能马上被执行。
2. 当调用yield ()函数后,线程不会释放它的“锁标志”。

join()
调用某线程的该方法,将当前线程与该线程"合并",即等待该线程结束,再恢复当前线程的运行。当前线程就是当前这行代码所在的线程。


Object的方法

wait()、notify()和notifyAll()
1. wait()函数有两种形式:第一种形式接受一个毫秒值,用于在指定时间长度内暂停线程,使线程进入停滞状态。第二种形式为不带参数,代表waite()在notify()或notifyAll()之前会持续停滞。wait线程池是被wait的线程的集合,等待被notify。
2. 当对一个对象执行notify()时,会从线程等待池中移走该任意一个线程,并把它放到锁标志等待池中;当对一个对象执行notifyAll()时,会从线程等待池中移走所有该对象的所有线程,并把它们放到锁标志等待池中。锁标志等待池中的线程就是等待获取该对象的锁权限,synchronized也会让线程进入锁标志等待池。
3. 当调用wait()后,线程会释放掉它所占有的“锁标志”,从而使线程所在对象中的其它synchronized数据可被别的线程使用。


wait()和notify()因为会对加锁的对象的“锁标志”进行操作,所以它们必须在synchronized函数或synchronized block中进行调用。如果在non-synchronized函数或non-synchronized block中进行调用,虽然能编译通过,但在运行时会发生IllegalMonitorStateException的异常。通过对该对象的wait调用,会让当前线程进入等待状态。

热点排行