进程线程

要明白线程进程之间的关系,首先就要明白程序、进程、线程之间的定义与联系!


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

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

  • 线程
      每个运行的程序都是一个进程,在每一个进程中还可以有多个执行单位同时运行,这些执行单元就被称为线程。操作系统中每个进程至少存在一个线程,用来来执行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("线程运行了......");
    }
}

程序运行结果如下图:
Thread运行结果

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("线程运行了......");
    }
}

程序结果如下图:
Runnable运行结果

  • 线程实现方法总结
      由上面两个代码运行结果得出:继承Thread类和实现Runnable接口都能实现多线程。
      
  • 线程生命周期及状态转换
    线程生命周期
    线程周期分为五个状态,分别是新建状态(New),就绪状态(Runnable),运行状态(Running),阻塞状态(Blocked),死亡状态(Terminated)。

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

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

  • 运行状态(Running)
      如果处于就绪状态的线程获得CPU使用权,开始执行run方法中的代码,则该线程处于运行状态。
      
  • 阻塞状态(Blocked)
      一个正在执行的线程由于某种特殊情况如输入输出时,会舍弃CPU使用权,进入阻塞状态。当特殊情况处理完后不是立即进入运行状态,而是转入就绪状态,等待系统调度。
      

  • 死亡状态(Terminated)
      当线程的的run()方法运行完毕或者线程抛出一个未捕获的异常、错误,线程就进入死亡状态。

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值