【php精品源码栏目提醒】:本文主要为网学会员提供“【精品】8多线程 - 大学课件”,希望对需要【精品】8多线程 - 大学课件网友有所帮助,学习一下!
第八讲 多线程 多线程本讲要点 学习目标 掌握:线程有关的类以及线程的优先级。
掌握:线程的生命周期。
掌握:线程的同步方法。
了解:进程、线程的定义以及它们的区别。
重点 线程的实现方法。
难点 线程的同步实现方法。
多线程 多线程基本概念文件 各种系统资源 输入输出装置 文件 各种系统资源 输入输出装置 数据区段 数据区段 程序区段 程序区段 同时有数个地方在执行 只有一个地方在执行 传统的进程 多线程的任务 多线程8.1 线程概述 通过编制多线程程序,可以让计算机在同一段时间内并行 处理多个不同的工作任务。
进程是程序的一次动态执行过程, 它对应了从代码加载、执行到执行完毕的一个完整过程,这个过程 也是进程本身从产生、发展到消亡的过程。
多进程操作系统能同时运行多个进程(程序),宏观上同时运行, 微观上交替运行 线程是比进程更小的执行单位,是执行中一段程序。
比如吃饭、睡觉、看书、工作……有时候为了提高效率,你可能同 时做几件事,每一件事叫做一个进程,那么你就工作在多进程状态 下了。
如果你煮稀饭时,再在稀饭锅上同时馏上馒头,那么煮稀饭和馏馒 头就是多线程的概念,煮稀饭和馏馒头用的是同一个炉灶、同一个 锅,效率就更高了。
多线程 线程和进程的主要差别体现在如下两个方面: 线程是进程内的可执行单元,其划分比进程小。
每个进程都有一段专用的内存区域。
线程却共享所在进程的内存单元(包括代码和数据), 实现数据交换、实时通信与必要的同步操作。
通过使用线程,可以避免用户在运行程序和得到结果之 间的停顿,还可以让一些任务(如打印任务)在后台运 行,而用户则在前台继续执行一些其他的工作。
总之,利用多线程技术,可以使编程人员方便地开发出 能同时处理多个任务的功能强大的应用程序。
多线程Thread类 Thread类代表Java程序中单个的运行线程,它综 合了Java程序中一个线程需要拥有的属性和方法。
构造方法 public Thread 功能:创建一个系统线程类的对象。
public ThreadRunnable target 参数说明:target是Runnable系统接口的实例对象。
功能:创建一个系统线程类的对象,该线程可以调用指 定Runnable接口对象的run方法。
多线程 public ThreadThreadGroup groupString name 参数说明:group是ThreadGroup线程组的实例 对象,name是新线程名字,可以用null作线程名。
功能:创建一个指定名字的系统线程类的对象,并将 该线程加入到指定的线程组中。
public ThreadString name 功能:创建一个指定名字的系统线程类的对象。
public ThreadThreadGroup groupRunnable target 功能:创建一个系统线程类的对象,并将该线程加入 到指定的线程组中,同时该线程可以调用指定 Runnable接口对象的run 方法。
多线程 public ThreadThreadGroup groupRunnable targetString name 功能:创建一个指定名字的系统线程类的对 象,并将该线程加入到指定的线程组中,同 时该线程可以调用指定Runnable接口对象的 run 方法。
说明:利用构造方法创建新对象之后,这个 对象中的有关数据被初始化,从而进入线程 的新建状态。
多线程线程优先级 哪一个线程先执行,取决于线程的优先级。
线程 的优先级是个整数值,值愈高,愈先执行,值愈 低,愈慢执行。
在Thread类中有三个有关线程优先级的静态常 量: MAX_PRIORITY:线程拥有最大优先级,值为10。
MIN_PRIORITY:线程拥有最小优先级,值为1。
NORM_PRIORITY:标准的优先级,它为一般线程 的默认级,值为5。
Thread类的方法 利用Thread类定义的方法可以创建线程、控制线程等。
Thread类中常用的方法见表8-1所示。
多线程 方法 说明public static int activeCount 返回线程组中目前活动线程 的数目public static native Thread 返回目前正在执行的线程 currentThread public void destroy 销毁线程public static int 将活动线程拷贝至指定的线 enumerateThread tarray 程数组public final String getName 返回线程的名称public final int getPriority 返回线程的优先级public final ThreadGroup 返回线程的线程组 getThreadGroup public static boolean 判断目前线程是否被中断, interrupted 返回逻辑值 多线程public final native boolean isAlive 判断线程是否在活动, 返回逻辑值public boolean isInterrupted 判断线程是否被中断, 返回逻辑值public final void join throws 等待线程终止InterruptedExceptionpublic final synchronized void 等待millis毫秒后,joinlong millis throws InterruptedException 线程终止。
public final synchronized void joinlong millisint 等待millis毫秒加上 nanos throws InterruptedException nanos微秒后, 线程终止。
public void run 执行线程public final void setName 设定线程名称public final void setPriorrityint newPriority 设定线程的优先值 多线程public static native void 使正在执行的线程休眠millis毫秒 sleeplong millis throws InterruptedExceptionpublic static void sleeplong 使正在执行的线程休眠millis毫秒 millisint nanos 加上nanos微秒throws InterruptedExceptionpublic native synchronized 开始线程执行 void start public String toString 返回代表线程的字符串public static native void 将目前正在执行的线程暂停,允许 yield 其它线程执行。
多线程线程的生命周期 线程的状态表示线程正在进行的活动以及在此时 间段内所能完成的任务. 线程一般具有五种状态,即新建、就绪、运行、 堵塞、终止,称其为线程的一个生命周期。
新建状态 用构造方法创建了一个线程对象后,新生的线程对象便 处于新建状态,此时,它已经有了相应的内存空间和其 它资源,但还处于不可运行状态。
新建一个线程对象可 采用线程构造方法。
例如: Thread threadnew Thread 多线程 就绪状态 新建线程对象后,调用该线程的start 方法就可以启 动线程。
线程进入就绪状态,并且进入线程就绪队列 排队,等待CPU服务,这表明它已经具备了运行条件 运行状态 当就绪状态的线程被调用并获得处理器资源时,线程 进入运行状态。
此时,自动调用该线程对象的run 方法。
run 方法定义了该线程的操作和功能。
多线程 堵塞状态 一个正在执行的线程在某些特殊情况下,如被人为挂起 或需要执行耗时的输入输出操作时,将让出CPU并暂时 中止自己的执行,进入堵塞状态。
在可执行状态下,如 果调用sleep 、suspend 、wait 等方法,线程 都将进入堵塞状态。
堵塞时,线程不能进入就绪队列排 队,而转入相应的阻塞队列排队,只有当引起堵塞的原 因被消除后,线程才可以转入就绪状态。
终止状态 线程调用stop 方法时或run 方法执行结束后,线程 即处于终止状态。
处于终止状态的线程不具有继续运行 的能力。
多线程8.2 线程的实现 实现线程有两种方法,一.继承Thread类,覆盖它的run 方法,二.通过Runnable接口实现它的run方法。
通过继承Thread类实现多线程(直接方式) 创建一个线程,最简单的方法就是从Thread类直接继承。
Thread类包含了创建和运行线程所需的一切东西。
由于系统的 Thread类中,run 方法没有具体内容,所以用户创建自己的 Thread类的子类时,需要在子
上一篇:
C#代码规范范本
下一篇:
“温魅杯”会员我最红K歌大赛策划书