电脑故障

位置:IT落伍者 >> 电脑故障 >> 浏览文章

多线程


发布日期:2022/10/4
 

在计算机编程中一个基本的概念就是同时对多个任务加以控制许多程序设计问题都要求程序能够停下手头的工作改为处理其他一些问题再返回主进程可以通过多种途径达到这个目的最开始的时候那些拥有机器低级知识的程序员编写一些中断服务例程主进程的暂停是通过硬件级的中断实现的尽管这是一种有用的方法但编出的程序很难移植由此造成了另一类的代价高昂问题

有些时候中断对那些实时性很强的任务来说是很有必要的但还存在其他许多问题它们只要求将问题划分进入独立运行的程序片断中使整个程序能更迅速地响应用户的请求在一个程序中这些独立运行的片断叫作线程(Thread)利用它编程的概念就叫作多线程处理多线程处理一个常见的例子就是用户界面利用线程用户可按下一个按钮然后程序会立即作出响应而不是让用户等待程序完成了当前任务以后才开始响应

最开始线程只是用于分配单个处理器的处理时间的一种工具但假如操作系统本身支持多个处理器那么每个线程都可分配给一个不同的处理器真正进入并行运算状态从程序设计语言的角度看多线程操作最有价值的特性之一就是程序员不必关心到底使用了多少个处理器程序在逻辑意义上被分割为数个线程假如机器本身安装了多个处理器那么程序会运行得更快毋需作出任何特殊的调校

根据前面的论述大家可能感觉线程处理非常简单但必须注意一个问题共享资源!如果有多个线程同时运行而且它们试图访问相同的资源就会遇到一个问题举个例子来说两个进程不能将信息同时发送给一台打印机为解决这个问题对那些可共享的资源来说(比如打印机)它们在使用期间必须进入锁定状态所以一个线程可将资源锁定在完成了它的任务后再解开(释放)这个锁使其他线程可以接着使用同样的资源

Java的多线程机制已内建到语言中这使一个可能较复杂的问题变得简单起来对多线程处理的支持是在对象这一级支持的所以一个执行线程可表达为一个对象Java也提供了有限的资源锁定方案它能锁定任何对象占用的内存(内存实际是多种共享资源的一种)所以同一时间只能有一个线程使用特定的内存空间为达到这个目的需要使用synchronized关键字其他类型的资源必须由程序员明确锁定这通常要求程序员创建一个对象用它代表一把锁所有线程在访问那个资源时都必须检查这把锁

上一篇:反模式可以如何提高编程

下一篇:设计模式-快餐简解-【装饰模式】