08章+多线程.ppt

  1. 1、本文档共16页,可阅读全部内容。
  2. 2、有哪些信誉好的足球投注网站(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
查看更多
Java程序开发教程 Java计算机培训中心 cc.zhangwei@163.com 第08章 多线程 多任务处理 多任务处理有两种类型: 基于进程 进程是重量级的内核级实体,需要分配它们自己独立的地址空间:包括有虚拟内存映射、文件描述符、用户ID等,并且每个进程都有属于自己的这些集合。用户的程序要访问进程结构中的数据、查询或改变状态,唯一方法是通过系统调用。进程间通信和转换是昂贵和受限的。 基于线程 线程是轻量级实体,由寄存器、堆栈和某些数据组成。进程结构的其余部分由所有的线程所共享:如地址空间、文件描述符等——它们共享相同的地址空间并且共同分享同一个进程。线程间通信是便宜的,线程间的转换也是低成本的。 线程的概念 一个线程是一个程序内部的一个顺序控制流。线程并不是程序,它自己本身并不能运行,必须在程序中运行。在一个程序中可以实现多个线程,这些线程同时运行,完成不同的功能。从逻辑的观点来看,多线程意味着一个程序的多行语句同时执行,但是多线程并不等于多次启动一个程序,操作系统也不会把每个线程当作独立的进程来对待。 主线程 创建的每个程序至少有一个线程。在Java程序启动时,一个线程立刻运行,该线程通常称为程序的主线程。 主线程的重要性体现在两个方面: 它是产生其他子线程的线程。 通常它必须最后完成执行,因为它执行各种关闭动作。 用Thread类的currentThread()方法访问该线程。 主线程示例 public class MainThread { public static void main(String args[]) { Thread thisThread = Thread.currentThread(); thisThread.setName(主线程); try { for( int counter = 0; counter 10; counter += 2 ) { System.out.println(counter+ +thisThread); Thread.sleep(1000); } } catch ( InterruptedException e) { System.out.println(Hey! I was interrupted); } } } 创建多线程应用程序:子类化Thread 通过直接扩展Thread类来直接创建线程,并覆盖 run() 方法。 class mythread extends Thread { public void run( ) {/* 覆盖该方法*/ } } Thread类的主要方法 创建多线程应用程序:实现Runnable接口 通过设计一个类,使之实现java. lang. Runnable接口,并实现 run() 方法。 再把该接口作为参数传递给Thread类的构造方法后间接创建线程: class mythread implements Runnable{ public void run( ) {/* 实现该方法*/ } } 线程生命周期 线程是动态的,具有一定的生命周期,分别经历从创建、执行、阻塞直到消亡的过程。在每个线程类中都定义了用于完成实际功能的run方法,这个run方法称为线程体(Thread Body)。按照线程体在计算机系统内存中的状态不同,可以将线程分为创建(new)、就绪(runnable)、阻塞(blocked)和死亡(dead)四个状态, 线程优先级 Java 中的线程优先级是在 Thread 类中定义的常量 NORM_PRIORITY : 值为 5 MAX_PRIORITY : 值为 10 MIN_PRIORITY : 值为 1 缺省优先级为 NORM_PRIORITY 有关优先级的方法有两个: final void setPriority(int newp) : 修改线程的当前优先级 final int getPriority() : 返回线程的优先级 线程同步 有时两个或多个线程可能会试图同时访问一个资源 例如,一个线程可能尝试从一个文件中读取数据,而另一个线程则尝试在同一文件中修改数据 在此情况下,数据可能会变得不一致 为了确保在任何时间点一个共享的资源只被一个线程使用,应使用“同步” 如何在 Java 中获得同步 同步基于“监督锁”这一概念。“监督锁”是用作互斥锁的对象。在给定时刻,只有一个线程可以拥有监督锁。 Java中所有的对象都拥有自己的监督锁 两种方式实现同步: 使用同步方法 synchronized void methodA() { } 使用同步块 synchronized(object) { //要同步的语

文档评论(0)

考试教学资料 + 关注
实名认证
内容提供者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档