没有合适的资源?快使用搜索试试~ 我知道了~
温馨提示
试读
17页
实现并发最直接的方式是在操作系统级别使用进程。进程是运行在它自己的地址空间内的自包容的程序。多任务操作系统可以通过周期性地将CPU从一个进程切换到另一个进程,来实现同时运行多个(进程)程序,尽管使得每个线程看起来在其执行过程都是歇歇停停。进程被操作系统互相隔开,因此不会彼此干涉,这使得用进程编程相对容易一些。与此相反,像java所使用的这种并发系统会共享内存或I/O这样的资源,因此编程编写多线程程序最基本的困难在于,协调不同线程驱动的任务之间这些资源的使用,以便使得这些资源不会同时被多个任务访问。
资源详情
资源评论
资源推荐
Java 多线程之基础篇(一)
目录
多线程之基础篇(一)
一 并发与并行
一概念
一比较
一进程和线程
二 基础概念
二线程状态图
二关键函数和关键字
三 常用的实现多线程的两种方式
三概述
三实现多线程实例
四 关键字
四概述
四 基本原则和实例
四 方法和 代码块
四实例锁和全局锁
117
一 并发与并行
一.1 概念
并行:多个 或者多台机器同时执行一段处理逻辑,是真正的同时。
并发:通过 调度算法,让用户看上去同时去执行,实际从 操作层面并不是真
正的同时,并发往往需要公共的资源,对公共的资源的处理和线程之间的协调都是并
发的难点。
一.2 比较
如果你想要一个程序运行的更快,那么可以将其断开为多个片段,在单独的处理
上运行每一个片段。并发是用于多个处理器编程的基本工具。为了是程序运行得更快,
你必须学习如何利用这些额外的处理器,而这正是并发赋予你的能力。
如果你有一台多处理器的机器,那么就可以在这些多处理器之间分布多个任务,
从而可以极大的提高吞吐量。这是使用强有力的多处理器 服务器常见情况,在为
每一个请求分配一个线程的程序中,它可以将大量的用户请求分布到多个 上。
但是,并发通常是提高运行在单处理器上的程序的性能。
因为,在单处理器上运行的并发程序开销应该比改程序的所有部分都顺序执行的
开销大,因为其中增加了所谓的上下文切换的代价(从一个任务切换到另一个任务)。
表面上看,将程序的所有部分当作单个的任务运行好像是开销更小一点,并且可以节
省上下文切换的代价。
使得这个问题变得有些不同的是阻塞,如果程序中的某个任务因为该程序控制范
围(通常是 )之外的某些条件而导致不能继续执行,那么我们就说这个任务或现场
阻塞了。如果没有并发,则整个程序都将停止下来,直到外部条件发生变化。但是,
如果使用并发来编写程序,那么当一个任务阻塞时,程序中的其他任务还可以执行,
因此这个程序可以保持继续向前运行。事实上,从性能的角度上看,如何没有任务阻
塞,那么单处理器上使用并发就没有任何意义。
在单处理器系统中的性能提高的常见实例是事件驱动的编程。实际上,使用并发
最吸引人的一个原因是具有可响应的用户界面。这也是在 ! 系统中不允许子线
程总访问 的原因,在 ! 中的 控件不是线程安全的,如果在多线程中并发访
问可能会导致 控件处于不可预期的状态。那为什么系统不对 控件的访问加上锁
的机制呢?原因有两个:其一,加上锁会让 访问逻辑变复杂;其二,锁机制会降低
访问效率,因为锁机制会阻塞某个线程的执行。所以 ! 系统中简单而且高效
的方法就是采用单线程模型来处理 操作。
217
一.3 进程和线程
实现并发最直接的方式是在操作系统级别使用进程。进程是运行在它自己的地址
空间内的自包容的程序。多任务操作系统可以通过周期性地将 从一个进程切换到
另一个进程,来实现同时运行多个(进程)程序,尽管使得每个线程看起来在其执行
过程都是歇歇停停。进程被操作系统互相隔开,因此不会彼此干涉,这使得用进程编
程相对容易一些。与此相反,像 " 所使用的这种并发系统会共享内存或 这样的
资源,因此编程编写多线程程序最基本的困难在于,协调不同线程驱动的任务之间这
些资源的使用,以便使得这些资源不会同时被多个任务访问。
二 基础概念
二.1 线程状态图
线程包括五种状态:
新建(#):线程对象被创建时,它只会短暂地处于这种状态。此时它已经分配了
必须的系统资源,并执行了初始化。例如:$%&$'()
就绪(*+,)-称为“可执行状态”。线程对象被创建后,其他线程调用了该对象的
%%'(方法,从而启动该线程。例如:%%%'(。处于就绪状态的线程,随时可能
被 调度执行。
317
剩余16页未读,继续阅读
qq_26205213
- 粉丝: 0
- 资源: 10
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
评论0