预览加载中,请您耐心等待几秒...
1/10
2/10
3/10
4/10
5/10
6/10
7/10
8/10
9/10
10/10

亲,该文档总共31页,到这已经超出免费预览范围,如果喜欢就直接下载吧~

如果您无法下载资料,请参考说明:

1、部分资料下载需要金币,请确保您的账户上有足够的金币

2、已购买过的文档,再次下载不重复扣费

3、资料包下载后请先用软件解压,在使用对应软件打开

JAVA编程高级 多线程编程 —— 3Sept.2008 ©NeusoftConfidential 多线程编程 目标: Java线程机制以及多线程编程的实现 本章旨在向学员介绍: )线程模型。教学方法:讲授ppt+ 1Java上机练习 2)Java多线程实现的两种方式:接口 和继承。 3)线程的休眠,中断及优先级。 4)线程的同步和死锁 本章要点 •多线程简介 多线程模型 •多线程实现的两种方式 实现Runnable接口 继承Thread类 •线程的属性和控制 线程状态及其生命周期 线程类的主要方法 休眠和中断 •多线程同步/通信问题 线程同步,锁和死锁 Contents 1多线程简介 2多线程实现的两种方式 3线程的属性和控制 4多线程同步/通信问题 多线程简介 •基本概念 线程一个程序内部 的顺序控制流 进程计算机在执行的程序 的实体 e.g.一个.class文件 一个.exe文件一个进程中可以包含 ……一个或多个线程,一个 线程就是一个程序内部 的一条执行线索 进程/线程区别 •进程和线程的区别 每个进程都有独立的代码和数据空间,进程的切换 会有很大的开销 同一类线程共享代码和数据空间,每个线程有独立 运行的栈和程序计数器,线程切换的开销小 •多进程和多线程 多进程:在操作系统中能同时运行多个任务(程序) 多线程:在同一应用程序中有多个顺序流同时执行 Contents 1多线程简介 2多线程实现的两种方式 3线程的属性和控制 4多线程同步/通信问题 多线程实现的两种方式 •多线程的实现 (1)创建线程类 继承Thread类或 实现Runnable接口 (2)通过Thread类构造器来创建线程对象 Thread() Thread(Runnabletarget) (3)通过start()方法激活线程对象 线程运行 多线程实现的两种方式 •创建线程的两种方式—线程类 继承Thread类——java.lang.Thread 实现Runnable接口——java.lang.Runnable •run()方法—线程运行体 要将一段代码(线程体)在一个新的线程上运行,该代码应该在一 个线程类的run()函数中 写一个类implementsRunnable接口,且必须覆盖Runnable接口中 的run()方法 写一个类extendsThread类,且必须重写Thread类的run()方法 继承Thread类实现线程类 •继承Thread类 线程调用 线程类 定义线程类继承 Thread类 覆盖run()方法 publicvoidrun() TestThread.java ThreadDemo.java 继承Thread类实现线程类 •run()与start() TestThread.java 实现Runnable接口实现线程类 •实现Runnable接口 线程调用 线程类 定义线程类实现 Runnable接口 线程共享同样 的数据和代码 覆盖Runnable接 口中的唯一的方法 publicvoidrun()TestRunnable.java RunnableDemo.java 两种实现方式的比较 •两种方式的比较 使用Runnable接口可以避免由于JAVA的单继承性带来的局限 适合多个相同的程序代码的线程去处理同一资源情况,把线程同 程序的代码、数据有效的分离 推荐使用实现Runnable接口 Contents 1多线程简介 2多线程实现的两种方式 3线程的属性和控制 4多线程同步/通信问题 线程状态及其生命周期 •线程的状态及其生命周期 一个Thread对象在它的整个生存期中能以几种不同的状态存在 start()—方法使线程处于可以运行的状态,但 不一定意味着该线程立即开始运行 线程类中的主要方法 •线程中的主要方法——java.lang.Thread 线程的优先级 •线程的优先级 Java提供一个线程调度器来监控程序中启动后进入就绪状态的所 用线程,线程调度器按照线程的优先级来决定应调度哪个线程来执 行 •线程的优先级用数字表示,范围从1到10,一个线程缺省的优先级是5 Thread.MIN_PRIORITY=1 Thread.NORM_PRIORITY=5 Thread.MAX_PRIORITY=10 •线程优先级方法 getPriority()——确定线程的优先级 setPriority()——设置线程的优先级 线程的休眠 •线程的休眠 •让线程中止一段时间的静态方法 sleep()•