1.13 并发编程

来源:互联网 发布:淘宝注册需要打电话吗 编辑:程序博客网 时间:2024/06/06 20:04

在计算机编程中有一个基本概念,就是在同一时刻处理多个任务的思想。许多程序设计问题都要求,程序能够停下正在做的工作,转而处理某个其他问题,然后在返回主进程。有许多方法可以实现这个目的。最初,程序员们所掌握的有关机器地秤的知识来编写中断服务程序,主进程的挂机是通过硬件中断来出发的。尽管这么做可以解决问题,但是其难度太大,而且不能移植,所以使得将程序移植到新型号的机器上是,既费时又费力。
有时中断对于处理时间性强的任务是必须的,但是对于大量的其他问题,我们只是想把问题切分成多个可独立运行的部分,从而提高程序的相应能力。在程序中,这些彼此独立运行的部分称为线程,上述概念被称为“并发“。并发最常见的例子就是用户页面。通过使用任务,用户可以在按下按钮后快速的得到一个相应,而不用被迫等待到程序完成当前任务为止。通常,线程只是一种单一处理器分配执行时间的手段。但是如果操作系统支持多处理器,那么每个任务都可以被纸牌给不同的处理器,并且它们是在真正的并行执行。在语言级别上,多线程带来的便利之一便是程序员不用再操心机器上是有多个处理器还是只有一个处理器。由于程序在逻辑上被分为宣称,所以如果机器拥有多个处理器,那么程序不需要特殊调整也能执行更快。
所有这些都是的并发开起来相当简单,但是有一个隐患:共享资源。如果有多个并行任务都要访问同一项资源,那么就会处问题。例如,两个进程不能同时向一台打印机发送消息。为了解决这个问题,可以共享资源,例如打印机,必须在试用期间被锁定。因此,整个过程是:某个任务锁定某项资源,完成其任务,然后释放资源锁,使其它任务可以使用这项资源。
Java的并发是内置于语言中的,Java SE5已经添加了大量而外的库支持。