线程概述

1.线程和进程

      几乎所有的操作系统都支持进程概念,所有运行中的任务通常对应一个进程。进程是处于运行过程中的程序,并且具有一定独立功能

 1.一般而言进程包含如下三个特征 。

       独立性:进程是系统中独立存在的实体,它可以拥有自己独立的资源,每一个进程都拥有自己私有的地址空间。在没有经过进程本身允许的情况下,一个用户进程不可以直接访问进程的地址空间。

       动态性:进程与程序的区别在于,程序程序只是一个静态的指令集合,而进程是一个正在系统中活动的指令集合。在进程中加入了时间的概念。进程具有自己的生平周期和各种不同的状态,这些概念在程序中都是不具备的。

       并发行:多个进程可以在单个处理器上并发执行。

2.并发性与并行性的区别

       并行性:指在同一时刻,有多条指令在多个处理器上同时执行;

       并发行:指在同一时刻只能有一条指令执行。但多个进程指令被快速轮换执行,使得宏观上具有多个进程同时执行的效果。

3.线程

    多线程则扩展了多进程的概念,使得同一个进程可以同时并发出多个任务

     线程是进程的执行单元,线程是进程的组成部分,一个进程可以拥有多个线程,一个线程必须有一个父进程。

     线程是独立运行的,并不知道进程中其他线程的存在。运行的线程被挂起时另外一个线程便可以运行

     一个线程可以创建和撤销另一个线程。

     简单来说就是一个程序运行后至少有一个进程,一个进程里可以包含多个线程,但至少要包含一个线程

总的来说:操作系统可以执行多个任务,每个任务就是进程。一个进程又可以执行多个任务,其中每个任务就是线程

2.多线程的优势

   1.进程之间不能共享内存,但线程之间共享内存非常容易。

   2.系统创建进程时需要为该进程重新分配系统资源,但创建线程则代价小很多,因此使用多线程来实现多个任务并发比多进程的效率高。

   3.java语言内置了多线程功能支持,二不是单纯地作为底层的调度方式,从而简化了java的多线程编程.

在实际中:例如一个浏览器必须能同时下载多个图片,一个web服务器必须能响应多个用户请求;

 

     

     

 

 

 

 

 

 

你可能感兴趣的:(java基础,多线程)