您的位置:首页 > 其它

进程线程

2016-07-20 15:56 218 查看
要明白线程进程之间的关系,首先就要明白程序、进程、线程之间的定义与联系!

程序

  何为程序?程序就是一组指令的集合或是代码文件。

进程

  何为进程?在操作系统中,每个独立执行的程序都可以称为一个进程,也就是“正在运行的程序”。打开任务管理器,点击进程界面,可以看到正在运行的程序,也就是系统所有的进程。

  


线程

  每个运行的程序都是一个进程,在每一个进程中还可以有多个执行单位同时运行,这些执行单元就被称为线程。操作系统中每个进程至少存在一个线程,用来来执行main()方法中的代码。多线程运行时,每个线程之间都是独立的,它们可以并发执行。

  

区别与联系

  进程与程序:程序是静态的,进程是动态的。一个进程代表一个程序,一个程序可以有多个进程。

  进程与线程:操作系统给每个进程分配了资源,而线程只能共享进程分配的资源。一个进程至少包含一个线程。

  

线程的创建

  在java中线程的创建有两种方法。一是继承Thread类,二是实现Runnable接口。

package test;
/**
* 线程创建
*
* 继承Thread类
*
* @author lx
*
*/
public class Example extends Thread{

public static void main(String[] args) {

//创建线程对象
Example thread = new Example();
//线程启动
thread.start();

}
public void run() {//run 方法
System.out.println("线程运行了......");
}
}


程序运行结果如下图:



package test;
/**
* 线程创建
*
* 实现Runnable接口
*
* @author lx
*
*/
public class Example implements Runnable{

public static void main(String[] args) {
//创建Example实例对象
Example example = new Example();
//创建线程对象
Thread thread = new Thread(example);
//线程启动
thread.start();

}
public void run() {//run 方法
System.out.println("线程运行了......");
}
}


程序结果如下图:



线程实现方法总结

  由上面两个代码运行结果得出:继承Thread类和实现Runnable接口都能实现多线程。

  

线程生命周期及状态转换



线程周期分为五个状态,分别是新建状态(New),就绪状态(Runnable),运行状态(Running),阻塞状态(Blocked),死亡状态(Terminated)。

新建状态(New)

  当线程对象被创建的时候,线程的生命周期遍开始了,这时它还不能运行,和其他java对象一样,仅仅由java虚拟机为其分配内存;

就绪状态(Runnable)

  当start()方法调用时,该线程进入就绪状态。处于就绪状态的线程位于可运行池中。

  

运行状态(Running)

  如果处于就绪状态的线程获得CPU使用权,开始执行run方法中的代码,则该线程处于运行状态。

  

阻塞状态(Blocked)

  一个正在执行的线程由于某种特殊情况如输入输出时,会舍弃CPU使用权,进入阻塞状态。当特殊情况处理完后不是立即进入运行状态,而是转入就绪状态,等待系统调度。

  

死亡状态(Terminated)

  当线程的的run()方法运行完毕或者线程抛出一个未捕获的异常、错误,线程就进入死亡状态。
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息
标签:  线程