您的位置:首页 > 编程语言 > Java开发

java线程基础

2012-01-31 11:06 239 查看
1. Thread类 实现了Runnable接口的类。

在启动多线程的时候 先是通过Thread的构造方法Thread(Runnabletarget)构造出对象,然后在通过Thread中的start方法启动 多线程的。

2.线程的状态

new(新建)、runnable(可运行)、running(运行中)、waiting(等待)、timed_waiting(定时等待)、blocked(阻塞)、dead(死亡)

3.多线程状态之间的切换 .

3.1、当执行new Thread(Runnable r)后,新创建出来的线程处于new状态,这种线程不可能执行
3.2、当执行thread.start()后,线程处于runnable状态,这种情况下只要得到CPU,就可以开始执行了。runnable状态的线程, 会接受JVM的调度,进入running状态,但 是 具体何时会进入这个状态,是随机不可知的.
3.3、如果CPU调度给了别的线程,或者执行了Thread.yield()方法,则进入runnable状态,但是也有可能立刻又进入running状态
3.4、如果执行了Thread.sleep(long),或者thread.join(long),或者在锁对象上调用object.wait(long)方法,则会进入 timed_waiting状态
3.5、如果执行了thread.join(),或者在锁对象上调用了object.wait()方法,则会进入waiting状态
3.6、如果进入了同步方法或者同步代码块,没有获取锁对象的话,则会进入blocked状态
3.7、处于waiting状态中的线程,如果是因为thread.join()方法进入等待的话,在目标thread执行完毕之后,会回到runnable状态
3.8、如果是因为object.wait()方法进入等待的话,在锁对象执行object.notify()或者object.notifyAll()之后会回到runnable状态
3.9、处于timed_waiting状态中的线程,和waiting状态中的差不多,只不过是设定时间到了,就会回到runnable状态
3.10、处于blocked状态中的线程,只有获取了锁之后,才会脱离阻塞状态
3.11、当线程执行完毕,或者抛出了未捕获的异常之后,会进入dead状态,该线程结束
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签: