- 1
- 0
- 约5.5千字
- 约 46页
- 2018-03-04 发布于浙江
- 举报
[计算机软件及应用]第七章多线程上课
* 数据的完整性 在大多数实际运行的多线程应用程序中,两个或多个线程需要共享对同一个对象的访问。如果两个线程访问同一个对象,并且每个线程都调用一个方法修改该对象的状态,会出现什么情况? 由于多个线程运行时执行顺序是交叉的,根据数据被访问的顺序,将会产生受损坏的对象。这种情况通常称为争用条件(race condition) 线程1 线程2 线程10 对象 变量 取过来 加1后送回去 对象状态和想象的不一样啊,咋整?! * 对象的监视器(锁) 在java中,每个对象都包含了一把锁(也叫作“监视器”),它自动成为对象的一部分(不必为此写任何特殊的代码)。在给定时刻,只有一个线程可以拥有一个对象的监视器 示例:线程1进入withdrawal方法时,获得监视器(加锁);当线程1的方法执行完毕返回时,释放监视器(开锁),线程2的withdrawal方能进入 withdrawal() 线程1 监视器 线程2 负数的原因 * 同步(synchronized)2-1 为了确保在任何时刻一个共享对象只被一个线程使用,必须使用“同步(synchronized)” 有两种方式实现同步: 使用同步方法 synchronized void methodA() { } 使用同步块 synchronized(obj){//obj是被锁定的对象 //要同步的语句 } 用synchronized来标识的块或方法即为监视器监视的部分。只有使用synchronized ,才能利用对象的监视器功能。 同步(synchronized)2-1 同步(synchronized)重复取数据 * 第七章多线程 * 什么是进程 进程就是一个在内存中独立运行的程序,有自己的地址空间 。如正在运行的写字板程序就是一个进程 “多任务”:指操作系统能同时运行多个进程(程序)。如WIN2K系统可以同时运行写字板程序、画图程序、WORD、EXCEL等 * 什么是线程 线程:是进程内部单一的一个顺序控制流。 线程和进程 每个进程都有独立的代码和数据空间(进程上下文),进程切换的开销大。 线程: 轻量的进程,同一类线程共享代码和数据空间,每个线程有独立的运行栈和程序计数器(PC),线程切换的开销小。 多线程: 在同一个进程中有多个顺序流同时执行 进程与线程 进程一般是对操作系统而言的。例如,你打开word编辑文档,同时打开outlook收取邮件。我们可以说这时系统内有两个进程在运行。即多个程序几乎在同一时间执行多个任务。 线程一般是对某一程序而言的。如上例,你打开outlook收新邮件的同时,还可以看已下载的邮件,这两件事没有相互干扰,那么我们说此时这一程序中至少有两个线程在运行。即每一个程序在同一时间内执行多个任务。 * 线程的概念模型 虚拟的CPU,由java.lang.Thread类封装和虚拟 CPU所执行的代码,传递给Thread类对象。 CPU所处理的数据,传递给Thread类对象。 代 码 数 据 虚拟CPU Java线程模型 * 线程体 Java的线程是通过java.lang.Thread类来实现的。 每个线程都是通过某个特定Thread对象所对应的方法run( )来完成其操作的,方法run( )称为线程体(即线程的可执行代码)。 * 多线程 文件 输入输出装置 各种系统资源 数据区段 程序区段 只有一个地方在执行 文件 输入输出装置 各种系统资源 程序区段 同时有数个地方在执行 传统的进程 多线程的任务 * Java多线程 * 线程的调度 调度策略 时间片 抢占式:高优先级的线程抢占CPU Java的调度方法 同优先级线程组成先进先出队列,使用时间片策略 对高优先级,使用优先调度的抢占式策略 1 2 * 主线程 在任何Java程序启动时,一个线程立刻运行(即main方法对应的线程),该线程通常称为程序的主线程。 主线程的特点: 它是产生其他子线程的线程。 它不一定是最后完成执行的线程,子线程可能在它结束之后还在运行。 * 创建线程 有两种方法用来创建线程: 声明一个 Thread 类的子类,并覆盖 run() 方法。 class mythread extends Thread { public void run( ) {/* 覆盖该方法*/ } } 声明一个实现 Runnable 接口的类,并实现 run() 方法。 class mythread implements Runnable{ public void run( ) {/* 实现该方法*/ } } 用start()方法启动线程: Thread t1 = new Thread(); T1.start(); 创建线程,但没有调用start方法 创建线程,但调用start
原创力文档

文档评论(0)