`
623deyingxiong
  • 浏览: 188563 次
  • 性别: Icon_minigender_1
  • 来自: 北京
社区版块
存档分类
最新评论

进程和线程(Concurrency Tutorial 1)

阅读更多
       此刻,在南京参加一个封闭开发,闲来无事也是因为工作需要看Java tutorial.突然想把它翻译下来,仔细想想找出来几个理由:1 最近比较浮躁,什么技术都玩,总是不能深入,希望通过翻译技术文章让自己沉下来。2 还不算难翻译,顺便提高下英语水准和码字速度。本译文纯属笔者练习之用(大家就容许这位“笔者”得瑟一回呗),希望不会误导大家,文中凡是笔者以为重要的或可能翻译有误的名词都括弧对应英文。废话少说,直接上文。
原文地址:http://docs.oracle.com/javase/tutorial/essential/concurrency/index.html

课程: 并发


计算机用户理所当然的认为他们的系统能够一次做很多事情。他们以为他们可以在其他应用下载文件,管理打印队列和音频流时,继续使用文档处理程序工作。即使是一个程序他们也期望一次能做不止一件事情。譬如说,音频流软件必须同时从网上下载音频,压缩它,重放,刷新显示。即使文字处理软件也应该时刻对键盘和鼠标事件作出响应,不管它是否正在忙于刷新显示或变换格式。我们把这些可以做很多事情的软件叫作并发软件(concurrent software)。

Java 框架从Java语言到Java类库都完全支持了并发编程。从5.0开始,Java框架已经包含了高级别的并发编程接口。本课程介绍Java框架的基础并发支持,并总结一些java.util.concurrent包中的高级别并发编程接口。

进程和线程

在并发编程中,有两种基本的执行方式(two basic units of execution):进程和线程。在java中,并发编程大多与线程有关,然而进程也很重要。

正常的计算机系统都有很多活动的进程和线程。即使在单处理器系统中亦如此,因此在任一时刻实际上只有一个线程在运行。通过一个叫作时间分片的操作系统特性,单处理器计算机的计算时间在几个进程和线程之间共享。

这个特性在处理多个进程和线程的多核系统中变得越来越普遍,从而大大提高了操作系统并发执行进程和线程的能力(capacity)。但是并发也可以存在于没有多个进程或多个处理器的简单系统中。

进程

一个进程拥有一个独立(self-contained)的执行环境。进程都拥有一个完整的,私有的运行资源集合(private set of runtime resources);尤其是,进程拥有一个自己的内存空间(memory space)。

进程经常被等同于是程序或软件。然而,用户眼中的软件实际上可能是一个互相合作的进程集合。为了帮助(facilitate)多个进程间通信,大多数操作系统支持进程间通信(IPC Inter Process Communication)资源,譬如管道(pipes)和套接字(sockets)。IPC不仅被用来支持同一操作系统上进程间的通信,也用在不同操作系统之间。

大多Java虚拟机的实现是单进程的。一个Java 应用程序可以使用ProcessBuilder对象创建更多的进程。多进程应用(Multiprocess application)超出了本课程的范围。

线程

线程有时也称作轻量(lightweight)进程。进程和线程都提供一个执行环境,但创建一个线程需要的资源比进程更少。

多个线程存在于单个进程中,也就是说每个进程至少有一个线程。线程共享进程的资源包括内存和已打开的文件,这样提高了效率,同时也带来了潜在的交互问题(potentially problematic)。

多线程(Multithreaded)运行是Java框架的基本特性。如果你去数”system”用户的线程,譬如用作内存管理、信号处理的线程,你会发现每个应用都有至少一个线程-或多个线程。但是从程序员的角度看,你只启动了一个叫作主线程(the main thread)的线程,主线程可创建更多的线程,在下一小节里我们将做详述。
分享到:
评论

相关推荐

Global site tag (gtag.js) - Google Analytics