并发程序设计(一)进程和线程的概念

序言

  Java平台拥有很好的并发性能,除了在语言设计和基本类库上的支持外,Java还提供了高层次的API(java.util.concurrent包中),在并发程序中,有两个基本的执行单位:进程和线程。Java语言中,并发程序主要集中于线程,本篇笔记先介绍进程和线程的概念。

  计算机系统内通常有很多动态的进程和线程。在单核的系统中,在任意时刻只能有一个线程在执行。单核系统中的处理时间通过操作系统中的“时间片”机制被进程和线程共享。现在的计算机通常拥有多个执行内核(execution cores),这使得系统并发执行进程和线程的能力也得到了极大的提升,但是对于单核计算机来说,并发也是可实现的

1. 进程(Process)

  程序是一段静态的代码,当一个程序启动时,它可以为即将开始的每项任务创建一个进程,进程是程序的一次动态执行过程,它对应了从代码加载到执行结束的一个完整过程,这个过程也是从进程本身从产生、发展至消亡的过程。 一个进程有完全独立的执行环境。一个进程通常有完全的、私有的运行时资源,每个进程有它自己的内存空间。
  一个程序可能是一系列协同运转的进程。协同的过程需要进程之间进行通信——IPC(Inter Process Communication) IPC不仅用于同一计算机上的进程之间通信,也可以用于不同计算机之间的进程通信。IPC的实现方式包括Linux中的管道和Socket等。

2.线程(Thread)

  线程与进程类似,也是执行一段代码的过程,但与进程不同的是,同类的多个线程共享一块内存空间和一组系统资源,而线程本身的数据通常只有微处理器的寄存器数据,以及一个供程序执行时使用的堆栈。所以线程的创建以及线程间的切换消耗的系统资源要比进程小的多,因此,线程有时又称为轻量级进程。

总结:
  线程存在于一个进程之中,每一个进程至少有一个线程。一个进程中可以包含多个线程。线程共享进程的资源,包括内存和打开的文件。
  每一个应用程序都至少有一个线程(如果算上系统线程的话,就是多个,如内存管理、信号处理等)。但是从程序员的角度来看,启动的只有一个线程,称为主线程(main thread)。这个线程有能力创建另外的线程。

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值