java中的线程(一)——线程的五种状态和线程的创建方式

来源:互联网 发布:从零开始学java 编辑:程序博客网 时间:2024/06/05 16:46

一、在java中,线程通常有五种状态,创建,就绪,运行、阻塞和死亡状态。


  第一是创建状态。在生成线程对象,并没有调用该对象的start方法,这是线程处于创建状态。 
  第二是就绪状态。当调用了线程对象的start方法之后,该线程就进入了就绪状态,但是此时线程调度程序还没有把该线程设置为当前线程,此时处于就绪状态。在线程运行之后,从等待或者睡眠中回来之后,也会处于就绪状态。 
  第三是运行状态。线程调度程序将处于就绪状态的线程设置为当前线程,此时线程就进入了运行状态,开始运行run函数当中的代码。 
  第四是阻塞状态。线程正在运行的时候,被暂停,通常是为了等待某个时间的发生(比如说某项资源就绪)之后再继续运行。sleep,suspend,wait等方法都可以导致线程阻塞。 

  第五是死亡状态。如果一个线程的run方法执行结束或者调用stop方法后,该线程就会死亡。对于已经死亡的线程,无法再使用start方法令其进入就绪。


二、main方法也是一个线程

垃圾回收机制是一个线程


三、创建线程的方法

1、方式一:定义一个线程类,他继承Thread并且重写其中的方法run(),run()方法称为线程体

class Test{public static void main(String args [])   //mian()产生主线程{//生成线程类对象FirstThread ft = new FirstThread();//启动线程1ft.start();//ft.run()不可以直接使用,千万不能这样写,public void run()方法称为线程体//是整个线程的核心,线程所要完成的任务就定义在其中,实际上不同功能的线程之间的区别就在于他们的线程体的不同//线程2for (int i=0;i<100 ;i++ ){System.out.println("main-->" + i);}//线程1与线程2交替进行}}</span>
class FirstThread extends Thread{public void run(){for(int i = 0;i<100;i++){System.out.println("FirstThread-->" + i);}}}</span>
2、创建线程的方式二

(1)实现接口Runnable接口,生成Runnable接口实现类的对象

(2)生成一个Thread对象,并将Runnable接口实现类的对象作为参数传递给Thread对象

class RunnableImpl implements Runnable{public void run(){for(int i = 0;i<100;i++){System.out.println("RunnableImpl-->" + i);}}}

class Test{public static void main(String args []){//生成Runnable接口实现类的对象</span>RunnableImpl ri = new RunnableImpl();//生成一个Thread对象,并将Runnable接口实现类的对象作为参数传递给Thread对象</span>Thread th = new Thread(ri);th.start();}}




0 0