Java多线程 -- 概述

Java多线程 - 概述

一、线程概述

几乎所有的操作系统都会支持进程的概念。所有运行中的任务通常都会对应着一个进程(Process)。而一个程序进入内存中运行的时候,就会变成一个线程。
可能很多人会在这里迷糊,进程和线程有些分不清楚。

简单,进程和线程区别:

  • 进程:运行中的程序,资源分配的单元,切换代价大,拥有资源多。
  • 线程:进程内部的一个执行序列,执行行单元,切换代价小,拥有资源少,多个线程共享进程的资源。

一般来说:进程会有三个特征:

  • 独立性:进程是系统中独立存在的实体,可以拥有自己的独立资源,每一个进程都拥有着自己私有的地址空间,在没有经过进程本身允许的额情况下,一个用户的进程不可以直接访问其他的进程的地址空间。
  • 动态性:进程与程序之间的区别在于:程序知识一个静态的指令集和,但是进程一个正在系统中活动的指令集和,在进程中加入了时间的概念,进程拥有自己的生命周期和各种不同的状态,这些概念在程序之中不具备的。
  • 并发性:多个进程可以在单个处理器上并发执行,多个进程之间不会相互影响。

注意:并发性与并行性是两个不同概念,并行指在同一时刻,有多条指令在多个服务器上同时执行,并发是指同一时刻只能有一条指令执行,但多个进程指令被快速轮换执行,使得宏观上能够具有多个进程同时执行的效果。

线程是进程的组成部分,一个进程能够拥有多个线程,一个线程必须有一个父进程。线程可以拥有自己的堆栈资源,自己的程序计数器和自己的局部变量,但不拥有系统资源,与父进程的其他线程共享着系统资源。因为多个线程共享父进程的全部资源,因此编程上更加方便,但是必须更加小心,因此需要确保线程之间不会互相影响。

二、多线程的优势

  • 因为线程的划分尺度小于进程,所以说是的多线程程序的并发性高
  • 多个线程共享内容,从而极大的提高了程序的运行效率
  • 线程比进程拥有的效率更高,因为多个线程共享同一个进程的虚拟空间。利用这些共享的数据,线程更容易实现相互之间的通信。

总结:

  • 进程间不能共享内存,线程间共享内存十分简单
  • 系统创建进程时需要为该进程重新分配系统资源,但创建线程的代价小,因此使用多线程实现多任务并发比多进程的效率高
  • Java语言内置多线程功能支持,而不是单纯地作为底层操作系统的调度方式,从而简化了Java多线程编程
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章