线程与进程区别以及线程作用

来源:互联网 发布:淘宝买东西上传身份证 编辑:程序博客网 时间:2024/06/15 05:23

1 进程与线程

(1)进程:正在进行中的程序。

这里写图片描述
(2)线程:就是进程中一个执行单元或执行情景或执行路径,负责进程中程序执行的控制单元。
这里写图片描述
  一个进程中至少要有一个线程。 当一个进程中线程有多个时,就是多线程。 比如我们经常使用杀毒软件杀毒,在杀毒的同时我们可以清理电脑垃圾,这就是多线程的体现。

2 线程的作用

  多线程解决的问题:可以让多部分代码同时执行。什么是同时执行呢?其实都是CPU在瞬间做着快速切换完成的。CPU的切换随机的,按照时间片的方式来完成。
  其实JAVA运行就是多线程的。在执行main函数中内容的同时,垃圾回收器也在回收堆内存的垃圾。所以执行main方法的线程和执行垃圾回收器的线程同时在执行,这就是多线程。
JVM在启动线程的时候,每一个线程都有自己要执行的内容。其中一个负责执行main函数中的内容,这个线程称之为主线程。负责垃圾回收器运行的称之为垃圾回收线程。
  为什么要启动多线程呢?因为有多部分代码需要同时执行。而且每一个线程都有自己要执行的内容,这个内容称之为线程的任务。简单说:启动线程就是为了执行任务,当任务有多个需要同时执行时,就需要多个线程。
【例2.1】不使用线程的方式的缺点。
ZiThread.java

public class ZiThread {    private String name;    ZiThread (String name)    {        this.name = name;    }    public void show()    {        for(int x=1; x<=10; x++)        {            for(int y=-99999999; y<99999999; y++){}//刻意写个循环让程序运行慢一点。            System.out.println(name+"---"+x);        }    }}

ThreadDemo.java

public class ThreadDemo {    public static void main(String[] args) {        // TODO 自动生成的方法存根        ZiThread d1 = new ZiThread ("旺财");        ZiThread d2 = new ZiThread ("小明");        d1.show();        d2.show();    }}

运行结果:
这里写图片描述
  分析上述代码可以发现,旺财不结束,小明出不来。因为主线程执行时,先执行的旺财,再执行小明。那么,可不可以实现旺财和小明同时执行呢?一条路径是无法解决这个问题的,需要多条路径来完成,那么就得在程序中创建线程。而打印小明旺财等代码就是线程任务。