Threads.ppt


文档分类:幼儿/小学教育 | 页数:约16页 举报非法文档有奖
1/16
下载提示
  • 1.该资料是网友上传的,本站提供全文预览,预览什么样,下载就什么样。
  • 2.下载该文档所得收入归上传者、原创者。
  • 3.下载的文档,不会出现我们的网址水印。
1/16
文档列表 文档介绍
Threads多线程
1
多线程
程序:静态的计算机高级语言编写的代码。
进程:程序的一次执行。系统运行程序的基本单位。
线程:程序中的部分代码的一次执行过程。
多进程:操作系统中多个程序同时执行。
多线程:程序中多个片断同时执行。
2
线程的生命周期
每个java程序都有一个主线程,即main()方法对应的线程,要实现多线程,必须在主线程中创建新的线程。Java中线程用Thread类及其子类的对象来表示。每个线程要经过创建、就绪、运行、阻塞和死亡5种状态,线程从新生到死亡的状态变化过程称为生命周期:
创建状态
就绪状态
运行状态
阻塞状态
终止状态
3
线程的生命周期
创建状态:用new关键字和Thread类或其子类建立的一个线程对象后,该线程就处于新生状态,就有自己的内存空间,通过调用start方法进入就绪状态。
就绪状态:该状态的线程具备了运行条件,但还没有分配到CPU,因而将进入线程队列,等待系统为其分配CPU。一旦获得CPU,线程就进入运行状态并自动调用自己的run方法。
运行状态:进入运行状态的线程执行自己的run方法中的代码,直到调用其他方法而终止、或等待某资源或完成任务而死亡。
4
线程的生命周期
阻塞状态:处于运行状态的线程在某种情况下,如执行了sleep方法或等待I/O设备等资源,将让出CPU并暂时终止自己的运行,进入阻塞状态。在阻塞状态的线程不能进入就绪队列。只有当引起阻塞的原因消除时,如睡眠时间到或等待的I/O设备空闲下来,线程便转入就绪状态,重新到就绪队列中排队等待CPU资源。当再次获得CPU时,便从原来的终止位置开始继续运行。
运行状态:当完成工作或被另一个线程强制终止,即死亡。
5
线程状态及状态转换示意图
6
多线程的实现
自定义线程的创建
声明一个 Thread 类的子类,并覆盖 run() 方法。
class mythread extends Thread
{
public void run( ) {/* 覆盖该方法*/ }
}
声明一个实现 Runnable 接口的类,并实现 run() 方法。
class mythread implements Runnable
{
public void run( ) {/* 实现该方法*/ }
}
7
多线程的实现
创建线程对象
线程名对象名=new 线程名(实际参数);
启动
();
运行
();
阻塞
8
多线程的实现
线程的控制
终止线程:stop()方法。
测试线程状态:isAlive()方法。
线程的暂停和恢复:
sleep(m)—现成停止m毫秒再运行
yield()---暂停当前线程,允许其它线程执行,但该线程处于可运行状态,不进入阻塞状态。
join()---暂停线程,调用本方法的线程结束后继续执行本线程。
中断线程:interrupt()---为当前线程设置中断标志。此时isInterrupted()方法为true,在sleep()之类的方法中阻塞该线程时会抛出中断异常。
9
线程互斥:并发执行的多个线程在某一时间内只
允许一个线程在执行以访问数据。
由于同一进程的多个线程共享同一片存储空间,
在带来方便的同时,也带来了访问冲突这个严重的
问题。Java语言提供了专门机制以解决这种冲突,
有效避免了同一个数据对象被多个线程同时访问。
应用的场合:
当两个或多个线程同时访问共享数据时,可能对
数据进行读、写、修改、删除等操作时,应保证同
时只有一个线程访问共享数据。
线程的管理
10

Threads 来自淘豆网www.taodocs.com转载请标明出处.

相关文档 更多>>
非法内容举报中心
文档信息
  • 页数16
  • 收藏数0 收藏
  • 顶次数0
  • 上传人mh900965
  • 文件大小145 KB
  • 时间2018-05-24