黑马程序员_线程

来源:互联网 发布:手机自动接听软件 编辑:程序博客网 时间:2024/04/29 20:01

  ------- android培训、java培训、期待与您交流! ----------

首先Java的线程机制是依靠Thread类实现的。

建立一个Java线程对象的方式有两种:

第一种:继承java.lang包中的Thread类,并覆盖其run()方法;

第二种:创建实现Runnable接口的类,将这个的对象作为参数传给Thread类的构造函数。

Thread对象创建完成后,只是意味着线程的存在。现在的线程还不是一般意义上的线程。

通过调用Thread对象的start()方法使它完成最后的一步,成为真正的线程。

那么这个线程与我们调用start()方法之前线程对象有什么不同呢?这就涉及到了Java对线程状态

的定义。

在Java语言标准中给线程定义了六种状态:新生,可运行,被阻塞,不计时等待,计时等待,死亡。

这些状态之间的转换如下图所示:




对于每个状态的解释:

1.新生:每个线程在创建完成后就是这个状态,此状态的含义是预备;

2.可运行:这个状态的进程具有执行权,但需要注意的是此时的线程并不一定在运行,线程是否运行依赖于系统,调用start()方法使线程从新生态进入本状态;

3.被阻塞:当进程需要等待获得对象锁时进入被阻塞状态,调度器允许本线程获得锁时离开这个状态;

4.计时等待、不计时等待:当线程等待另一个线程通知调度器条件时,线程进入等待状态。